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)))…

初期個体群の生成2

【内部主要記事】 【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では、キーワードはシンボルとは異なるオブジェク…

aref

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) => …

incf

CLISPの (nicf x) は schemeの (set! x (+ x 1)) に等しい。 schemeのマクロで実現 http://www.shido.info/lisp/scheme_syntax.html syntax-rules には複数の変換パターンを定義することができます。例えば、変数の値を増加させるマクロ incf を考えて見まし…

nth

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) (…

otherwise

http://wisdom.sakura.ne.jp/programming/lisp/clisp11.html …otherwise 記号を指定します。 これは、C言語の switch で例えると default 句に相当します。 schemeのelseに相当。

構文木が文法的に正しく出力されるようにする3(if文正常出力成功)

【内部主要記事】 【Abstruct的?】 【ToDoもしくは目次】 【参考文献】 if文が通常の使われ方をするようにコードを出力することに成功しました。 (use math.mt-random) (define mt (make <mersenne-twister> :seed (sys-time))) (define terminal (lambda () (let ((rdm (mt-r</mersenne-twister>…

構文木が文法的に正しく出力されるようにする2

内部リンク Abstruct的? ToDoもしくは目次 以下の変更を加える carを使わない。 cdrを使わない。 (実質、非終端記号(関数)はcons、if、list?、eq?) とりあえず、出力された構文木(コード)は実行可能になりました。 まだ、if構文が(文法的に正しくても)、通…

ランダムな個体(木構造)の生成 random-tree-v0.2.scm

内部リンク 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>…

構文木が文法的に正しく出力されるようにする1

内部リンク Abstruct的? ToDoもしくは目次 以下の変更を加えます。 ifの次にlist?かeq?かが来るようにする。 defineは使わない quoteは使わない 終端記号(ここではアルファベット小文字)を文字型とする。 1は難しそう。とりあえず掲載。 ifの構文はまだ変。…

gaucheでtraceを使う

内部リンク Abstruct的? ToDoもしくは目次 Gauche:FAQ の項目「Q. INSTALL.eucjpの通りにconfigureしたのに、エラーによりSLIBが実行できないのですが。」 に書かれている以下の方法を実行してmakeしなおしたら使えるようになりました。 # ./configure --wi…

ランダムな個体(木構造)の生成 random-tree-v0.1.scm デバッグバージョン

cond car cdr if 等をランダムに組み合わせて構文木を構築するプログラムを書いてみました。 以下に示した生成プログラムによって生成されたコードは、まだ正しい文法にはなりません。 それと、出力されるコードの構文木の深さを表すallowable-depthが生成プ…

内部リンク

Abstruct的? ToDoもしくは目次 (どこと繋がっているかわからない場合は、コメントなどで教えてもらえると内部リンクを張ります。)

ToDo

「やりたいこと」 高速なschemeで遺伝的プログラミング(GP)を実行させる。>保留 scheme(gauche)などで遺伝的プログラミングを実行させる>着手:Abstruct的? 「そのために必要なこと」 schemeで遺伝的プログラムが可能か調査する。 http://www.geneticprogr…

Automatic Memory Management in newLISP を翻訳してみる

Automatic Memory Management in newLISP

JAVA LISP 「QUILT」

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…

One Reference Only, (ORO) memory management

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

伝統的な自動メモリ管理 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…

1

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…

Schemeの外部仕様

Revised(5) Report on the Algorithmic Language Scheme アルゴリズム言語Schemeに関する第五改訂報告書実は自ら書くものではなく、外部使用は決定している(手抜き?) 変更部分 "nil"を"()"(空リスト)と認める。 スタックカウンタ方式で()を要素とみなし配…

A Linear Lisp Machine

このセクションの中で、私たちは、全てのconsセルがちょうど1の参照カウントを持っているLisp Machine のオートマトン理論モデル(それはデータ構造がすべて木であることを暗示する)を導入します――なぜなら、それらは共有またはサイクルを持っていません。例…

Introduction

借り手も貸し手もない; ローンはたびたびローンそれ自体と友人の両方を失うから… [Shakespeare, Hamlet, I. iii 75] 共有がコピーの代わりになるので、データ構造の共有は効率的である場合があります。しかし、それは誰がそれらの管理に責任を負うかに関して…

Abstract

線形論理は、ガーベジ・コレクションの問題の1つの解決策として提案されており、より多くの関数型言語内の効率的な「update-in-place」能力を提供しています。 線形論理はアクセスのしやすさを持ちます。そしてその結果、コピーは明示的な分配されたメモリの…

ToDo

「やりたいこと」 高速なschemeで遺伝的プログラミング(GP)を実行させる。 「そのために必要なこと」 schemeで遺伝的プログラムが可能か調査する。 http://www.geneticprogramming.com/Tutorial/ >できそう 線形論理(?)に従ったschemeを実装する。 >外…