scheme
今回のような遺伝的プログラミングの応用は、かなり無理があると言わざるを得ないです。今回の方法についていろいろ考えましたが、仮に学習用データを10与えて、それを再現できるプログラムが、遺伝的プログラミングの手法により実現できるか?というと、そ…
【内部主要記事】 【Abstruct的?】 【ToDoもしくは目次】 【参考文献】 【本文】 ランダムなアルファベット小文字のリスト=学習用データ 作成。学習用データ作成に当たって使用した関数interpretはこの本を参考にしました。プログラミング言語SCHEME作者: …
【内部主要記事】 【Abstruct的?】 【ToDoもしくは目次】 【参考文献】 【本文】 レーベンシュタイン距離を使って個体の適合度を求めます。 gaucheの配列に関する資料 http://www.shiro.dreamhost.com/scheme/gauche/man/gauche-refj_71.html レーベンシュ…
使用例 gosh> (use gauche.array) #<undef> gosh> (define A #,(<array> (0 3 0 3) 8 3 4 1 5 9 6 7 2)) A gosh> A #,(<array> (0 3 0 3) 8 3 4 1 5 9 6 7 2) ; [0] [1] [2] ;[0] 8 3 4 ;[1] 1 5 9 ;[2] 6 7 2 gosh> (array? A) #t gosh> (array-size A) 9 gosh> (array-set! A 0 </array></array></undef>…
http://www.geocities.jp/m_hiroi/func/scheme01.html リストの平坦化(記法はlambdaを使ったものに変更してあります) (define flatten (lambda (ls) (cond ((null? ls) '()) ((pair? ls) (append (flatten (car ls)) (flatten (cdr ls)))) (else (list ls)))…
【内部主要記事】 【Abstruct的?】 【ToDoもしくは目次】 【参考文献】 【本文】 なんとか、0世代目の個体*20を作成してベクターに格納するコードをschemeに移植して解釈してみました。 基本的な動きは、それだけなのですが *method-of-generation* 状態(fu…
http://openspace.timedia.co.jp/~nyama/wiliki/ghg.cgi?p=gauche.h%3AKeyword&c=e Common Lispでは、':' で始まるシンボルは常に自分自身を値とする特別なシンボル で、「キーワード」と呼ばれます。Gaucheでは、キーワードはシンボルとは異なるオブジェク…
http://flex.ee.uec.ac.jp/texi/eljman/eljman_74.html Function: aref array integer この関数は、配列の integer 番目の要素を返します…次の例において、文字 b は ASCII 98 です。 (setq primes [2 3 5 7 11 13]) => [2 3 5 7 11 13] (aref primes 4) => …
CLISPの (nicf x) は schemeの (set! x (+ x 1)) に等しい。 schemeのマクロで実現 http://www.shido.info/lisp/scheme_syntax.html syntax-rules には複数の変換パターンを定義することができます。例えば、変数の値を増加させるマクロ incf を考えて見まし…
http://www.bookshelf.jp/texi/elisp-intro/jp/emacs-lisp-intro_9.html (nth 0 '("one" "two" "three")) => "one" (nth 1 '("one" "two" "three")) => "two"http://www5a.biglobe.ne.jp/~sasagawa/MLEdit/Scheme/scheme9.html (define nth (lambda (n ls) (…
http://wisdom.sakura.ne.jp/programming/lisp/clisp11.html …otherwise 記号を指定します。 これは、C言語の switch で例えると default 句に相当します。 schemeのelseに相当。
【内部主要記事】 【Abstruct的?】 【ToDoもしくは目次】 【参考文献】 if文が通常の使われ方をするようにコードを出力することに成功しました。 (use math.mt-random) (define mt (make <mersenne-twister> :seed (sys-time))) (define terminal (lambda () (let ((rdm (mt-r</mersenne-twister>…
内部リンク Abstruct的? ToDoもしくは目次 以下の変更を加える carを使わない。 cdrを使わない。 (実質、非終端記号(関数)はcons、if、list?、eq?) とりあえず、出力された構文木(コード)は実行可能になりました。 まだ、if構文が(文法的に正しくても)、通…
内部リンク Abstruct的? ToDoもしくは目次 出力コードが文法的に正しくなるように調整中。 (define mt (make <mersenne-twister> :seed (sys-time))) (define terminal (lambda () (let ((rdm (mt-random-integer mt 26) )) (cond ((eq? rdm 0) 'a) ((eq? rdm 1) 'b) ((eq? rd</mersenne-twister>…
内部リンク Abstruct的? ToDoもしくは目次 以下の変更を加えます。 ifの次にlist?かeq?かが来るようにする。 defineは使わない quoteは使わない 終端記号(ここではアルファベット小文字)を文字型とする。 1は難しそう。とりあえず掲載。 ifの構文はまだ変。…
内部リンク Abstruct的? ToDoもしくは目次 Gauche:FAQ の項目「Q. INSTALL.eucjpの通りにconfigureしたのに、エラーによりSLIBが実行できないのですが。」 に書かれている以下の方法を実行してmakeしなおしたら使えるようになりました。 # ./configure --wi…
cond car cdr if 等をランダムに組み合わせて構文木を構築するプログラムを書いてみました。 以下に示した生成プログラムによって生成されたコードは、まだ正しい文法にはなりません。 それと、出力されるコードの構文木の深さを表すallowable-depthが生成プ…
Abstruct的? ToDoもしくは目次 (どこと繋がっているかわからない場合は、コメントなどで教えてもらえると内部リンクを張ります。)
「やりたいこと」 高速なschemeで遺伝的プログラミング(GP)を実行させる。>保留 scheme(gauche)などで遺伝的プログラミングを実行させる>着手:Abstruct的? 「そのために必要なこと」 schemeで遺伝的プログラムが可能か調査する。 http://www.geneticprogr…
Automatic Memory Management in newLISP
http://www.cobalt.co.jp/writing/java_lisp/java-lisp1.htm javaでのschemeの実装を目指しているらしいページ 実装の参考になるかも。 javaで実装することは確かにガベージコレクションを 実装する必要がないので楽にできるかもしれない。 javaを使うことで…
Empirical studies of LISP have shown that most LISP cells are not shared but can be reclaimed immediately during the evaluation process. newLISP does this by pushing a reference of each created memory object on to a result stack. When a hi…
1つの参照のみ(One Reference Only:ORO)、メモリ管理 Memory management in newLISP is different from memory management in other dynamic languages and based on a One Reference Only rule. Memory is never marked or reference counted, but a decisi…
伝統的な自動メモリ管理 Traditional automatic memory management In most programming languages automatic memory management is realized by a process called Garbage Collection. This is a process where allocated but unused memory gets occasiona…
During expression evaluation newLISP or any other interactive language system will constantly generate new memory objects resulting from intermediate evaluation results or from de-referencing memory objects due to new assignments or change…
Revised(5) Report on the Algorithmic Language Scheme アルゴリズム言語Schemeに関する第五改訂報告書実は自ら書くものではなく、外部使用は決定している(手抜き?) 変更部分 "nil"を"()"(空リスト)と認める。 スタックカウンタ方式で()を要素とみなし配…
このセクションの中で、私たちは、全てのconsセルがちょうど1の参照カウントを持っているLisp Machine のオートマトン理論モデル(それはデータ構造がすべて木であることを暗示する)を導入します――なぜなら、それらは共有またはサイクルを持っていません。例…
借り手も貸し手もない; ローンはたびたびローンそれ自体と友人の両方を失うから… [Shakespeare, Hamlet, I. iii 75] 共有がコピーの代わりになるので、データ構造の共有は効率的である場合があります。しかし、それは誰がそれらの管理に責任を負うかに関して…
線形論理は、ガーベジ・コレクションの問題の1つの解決策として提案されており、より多くの関数型言語内の効率的な「update-in-place」能力を提供しています。 線形論理はアクセスのしやすさを持ちます。そしてその結果、コピーは明示的な分配されたメモリの…
「やりたいこと」 高速なschemeで遺伝的プログラミング(GP)を実行させる。 「そのために必要なこと」 schemeで遺伝的プログラムが可能か調査する。 http://www.geneticprogramming.com/Tutorial/ >できそう 線形論理(?)に従ったschemeを実装する。 >外…