Hatena::Groupstudyroom

こそ勉

2011-08-18

vmware に debian squeeze いれる

02:25

  • 入れる OS のタイプの選択は debian 5 までしかなかったので、linux kernel 2.6 とかそういうのを選んだ
  • 64bit で入れた
  • 最初に入れるサービスとかのチェックは全部はずしておいた

vmware-tools をインストールするのをマウントして何かインストールする。仮想マシンのウィンドウで直接やったほうがよいかと思う。ssh でやってたら、インストール終わった時点で接続が切れた。

su -

apt-get install build-essential
apt-get install linux-headers-`uname -r`

mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom
cp /mnt/cdrom/VMwareTools-8.4.7-416484.tar.gz /usr/local/src
cd /usr/local/src
tar zxvf VMwareTools-8.4.7-416484.tar.gz
cd vmware-tools-distrib/
./vmware-install.pl
# 質問にはずっと enter

reboot
# なんとなく気持ちわるいので reboot

あとは ssh とか sudo とか入れてどうこうする。

LaiceeLaicee2016/04/28 21:04virtual - eu chiar cred ca se putea gestiona ok aglomeratia, sa fie mai ciai.izatlCvt despre a ura orasului "La multi ani!", nu cred ca o sa aprecieze oricum, dar your call.

SpikeSpike2016/04/29 04:43Koen,The government can create an environment to stimulate velocity by increasing money supply, but transactions are market based. If the private sector has deleveraged enough and saved enough, transactions will follow. Obviously, the current environment is a classic example.Food stamps and school vouchers would lead to immediate <a href="http://yaerfmg.com">trasoactinns,</a> but that is certainly limited.

2011-06-26

Scheme 手習い 3 - 2

| 22:36

subst2

アトムのリスト lat の最初に出ててくるアトム o1 または o2new で置き換えたリストを返す。

(define subst2
  (lambda (new o1 o2 lat)
    (cond
      ((null? lat) '())
      ((eq? (car lat) o1) (cons new (cdr lat)))
      ((eq? (car lat) o2) (cons new (cdr lat)))
      (else (cons (car lat) (subst2 new o1 o2 (cdr lat)))))))

multirember

アトムのリスト lat から、アトム a を取り除いたリストをつくる。

(define multirember
  (lambda (a lat)
    (cond
      ((null? lat) '())
      ((eq? a (car lat)) (multirember a (cdr lat)))
      (else (cons (car lat) (multirember a (cdr lat)))))))

multiinsertR

アトムのリスト lat の、アトム old の右側に、アトム new を入れたリストを作る。

(define multiinsertR
  (lambda (new old lat)
    (cond
      ((null? lat) '())
      ((eq? old (car lat)) (cons (car lat) (cons new (multiinsertR new old (cdr lat)))))
      (else (cons (car lat) (multiinsertR new old (cdr lat)))))))

multiinsertL

アトムのリスト lat の、アトム old の左側に、アトム new を入れたリストを作る。

(define multiinsertL
  (lambda (new old lat)
    (cond
      ((null? lat) '())
      ((eq? old (car lat)) (cons new (cons (car lat) (multiinsertL new old (cdr lat)))))
      (else (cons (car lat) (multiinsertL new old (cdr lat)))))))

multisubst

アトムのリスト lat の、アトム old を、アトム new で置き換えたリストを作る。

(define multisubst
  (lambda (new old lat)
    (cond
      ((null? lat) '())
      ((eq? old (car lat)) (cons new (multisubst new old (cdr lat))))
      (else (cons (car lat) (multisubst new old (cdr lat)))))))

2011-06-21

Scheme 手習い 3 - 1

| 02:37

引数のパターンを考えてくのが関数型なのかと思うくらい、この章はパターン考えさせる。

rember

rember は アトム a と アトムのリスト lat を引数にとり、lat の最初に出てくる a と同じ要素を除いたリストを返す。

(define rember
  (lambda (a lat)
    (cond
      ((null? lat) '())
      ((eq? a (car lat)) (cdr lat))
      (else (cons (car lat) (rember a (cdr lat)))))))
  1. アトム a と アトムのリスト lat を引数にとり、
    1. latnull なら、空リストを返す
    2. lat の先頭の要素が a と同じなら、lat ののこり要素
    3. 上の2つのどちらでもないなら、lat の最初の要素と、rember a lat したリストを cons したリストを返す

firsts

firsts は、リスト(要素に空でないリストを含む) l に適用すると、要素の最初の要素を要素とするリストを返す。

要素が空でないリスト、というので、問題がちょっと簡単になってると思う。ありがたいはなし。

(define firsts
  (lambda (l)
    (cond
      ((null? l) '())
      (else (cons (car (car l)) (firsts (cdr l)))))))
  1. 空でないリストを要素とするリスト l を引数にとり、
    1. リスト lnull なら、空リストを返す
    2. そうでないなら、リストの最初の要素のリストの最初の要素をとりだし、firsts l したリストと cons する

insertR

アトム new、アトム old、アトムのリスト lat に関数適用すると、lat の最初に出てくる old の次に、new を要素として追加したリストを返す。

(define insertR
  (lambda (new old lat)
    (cond
      ((null? lat) '())
      (else
        (cond
          ((eq? (car lat) old) (cons old (cons new (cdr lat))))
          (else (cons (car lat) (insertR new old (cdr lat)))))))))

rember の例にならえば、以下のようにたぶんできる。

(define insertR
  (lambda (new old lat)
    (cond
      ((null? lat) '())
      ((eq? (car lat) old) (cons old (cons new (cdr lat))))
      (else (cons (car lat) (insertR new old (cdr lat)))))))
  1. アトム new、アトム old、アトムのリスト lat を引数にとり、
    1. latnull なら、空リストを返す
    2. lat の先頭の要素が old と同じなら、lat の2つめ以降の要素リストの頭にnewcons したリストに old をコンスしたリストを返す
    3. そうでないなら、lat の先頭の要素と、2つめ以降の要素に insertR new old を適用したリストを cons したリストを返す

insertL

アトム new、アトム old、アトムのリスト lat に関数適用すると、lat の最初に出てくる old の前に、new を要素として追加したリストを返す。

(define insertL
  (lambda (new old lat)
    (cond
      ((null? lat) '())
      ((eq? old (car lat)) (cons new lat))
      (else (cons (car lat) (insertL new old (cdr lat)))))))
  1. アトム new、アトム old、アトムのリスト lat を引数にとり、
    1. latnull なら、空リストを返す
    2. lat の先頭の要素が old と同じなら、lat の頭に new をくっつけた cons したリストを返す
    3. そうでないなら、lat の先頭の要素と、2つめ以降の要素に insertL new old を適用したリストを cons したリストを返す

subst

アトム new、アトム old、アトムのリスト lat に関数適用すると、lat の最初に出てくる old を、new で置き換えたリストを返す。

(define subst
  (lambda (new old lat)
    (cond
      ((null? lat) '())
      ((eq? old (car lat)) (cons new (cdr lat)))
      (else (cons (car lat) (subst new old (cdr lat)))))))
  1. アトム new、アトム old、アトムのリスト lat を引数にとり、
    1. latnull なら、空リストを返す
    2. lat の先頭の要素が old と同じなら、lat の2つめ以降の要素(oldを取り除いたリスト) の頭に new をくっつけたリストを返す
    3. そうでないなら、lat の先頭の要素と、2つめ以降の要素に subst new old を適用したリストを cons したリストを返す

眠いので、subst2 以降はあとで。

2011-06-17

Scheme 手習い 2

| 01:41

気になってた、cdr を空リストに適用するとどうなるのか試す。

gosh> (cdr ())
*** ERROR: pair required, but got ()
Stack Trace:
_______________________________________
gosh> (car ())
*** ERROR: pair required, but got ()
Stack Trace:
_______________________________________

car も空リストには適用できなかった。なのでまず最初に null? か。

lat?member? を書いてみる。

;; 必要なやつ
(define atom?
  (lambda (x)
    (and (not (pair? x)) (not (list? x)))))

(define lat?
  (lambda (l)
    (cond
      ((null? l) #t)
      ((atom? (car l)) (lat? (cdr l)))
      (else #f))))

(define member?
  (lambda (x l)
    (cond
      ((null? l) #f)
      ((eq? x (car l)) #t)
      (else (member? x (cdr l))))))

member? が書けてなかった。

(define member?
  (lambda (a lat)
    (cond
      ((null? lat) #f)
      (else (or (eq? a (car lat))
                (member? a (cdr lat)))))))
  1. lat が空リスト
    1. だったら #f
    2. じゃなかったら、lat の一番最初の要素が a
      1. 同じだったら #t
      2. ちがったら lat の残りの要素と a とに member? を適用した結果がそう。

あと nil 返してるところあったけど、#f かと思う。

2011-06-16

Scheme 手習い 1

| 02:11

読んでよくわからなかったところを実際入力して試す。

atom? の定義。

(define atom?
  (lambda (x)
    (and (not (pair? x)) (not (null? x)))))
gosh> (null? '())
#t
gosh> (null? ())
#t

空リストの場合は、クオートいらない?

実際、eq? の引数にリストがきてもかまいません。同じリストなら2つのリストは eq? になります。

gosh> (eq? '() '())
#t
gosh> (eq? 1 1)
#t
gosh> (eq? '(1 2 3 4) '(1 2 3 4))
#f
gosh> (equal? '(1 2 3 4) '(1 2 3 4))
#t
  • eq? のほうは同じオブジェクトかどうか
  • equal? のほうは同じ値かどうか(リストの要素が全部同じ値か)

をみてるかんじ?