14

これは、通常、プログラムの表現として Lisp サブセットを使用する遺伝的プログラミングに役立ちます。

Web で Liskell (Lisp 構文、内部に Haskell) と呼ばれるものを見つけましたが、リンクが壊れていて、その論文が見つかりません...

4

5 に答える 5

15

著者の Liskell に対する不満を解決するために設計されたLiskをチェックしてください。

余暇には、Lisk というプロジェクトに取り組んでいます。GHC の -pgmF オプションを使用すると、GHC がファイルをコンパイルする前にファイルを前処理するために呼び出されるプログラム名を GHC に指定できます。GHCi とインポートでも動作します。次のように使用します。

{-# OPTIONS -F -pgmF lisk #-}
(module fibs
  (import system.environment)

  (:: main (io ()))
  (= main (>>= get-args (. print fib read head)))

  (:: test (-> :string (, :int :string)))
  (= test (, 1))

  (:: fib (-> :int :int))
  (= fib 0 0)
  (= fib 1 1)
  (= fib n (+ (fib (- n 1))
              (fib (- n 2)))))

ソースはこちら

また、実際には Haskell に関心がなく、その機能の一部だけが必要な場合は、Haskell に似た多くの最新の関数型プログラミング機能を備えた s 式構文を備えたQi (またはその後継のShen ) を確認することをお勧めします。 .

于 2011-06-02T02:53:24.717 に答える
6

私が取り組んでいるプロジェクト、husk schemeに興味があるかもしれません。

基本的には、Haskell から Scheme コード (S 式) を呼び出すことができ、その逆も可能です。そのため、Haskell 側で何かをしたい場合は、プログラム内でそのコードを混ぜ合わせてから、S 式をネイティブ Haskell データ型として処理できます。

とにかく、それはあなたにとって役に立つかもしれません - 見て、自分で決めてください。

于 2011-06-02T03:01:22.533 に答える
3

明白な答えは「はい」です。S 式が解析されたコードの単純で統一された表現として意図されていたことを考えると、当然のことです。問題は、Haskell や ML などの言語では、いくつかの問題が発生する傾向があるということです。私はかつて OCaml に似たようなことをしたことがあります (CamlP4 を悪用し、P4 AST を sexpr のような表現に変換する関数を書きました)。同じ...たとえば、関数適用があり、パターンで使用される同様の形式と、型式で使用されるさらに別の形式があります。

私の推測では、このように遺伝的プログラミングを行おうとすると、意味のないジャンク プログラムが大量に発生する可能性があります。しかし、それは静的に型付けされた言語にとっても驚くべきことではありません.動的に型付けされた言語では、より多くのジャンクが許可されます.2つの世界WRTを遺伝的プログラミングと比較すると、AI以外の理由で興味深いかもしれません...

于 2011-06-02T02:48:45.127 に答える
3

Liskell の論文はhttp://clemens.endorphin.org/ILC07-Liskell-draft.pdfにあり、liskell.org サイトはまだ一般的に公開されているようです。

于 2011-06-02T03:01:05.560 に答える
3

ほとんどの遺伝的プログラミング ソフトウェアでは、プログラムは抽象構文木 (AST) として表現され、その形式で直接評価されます。Lisp の S 式の構文は、プログラムがソース コードとして出力されたときにのみ明らかになります。選択したソフトウェアの出力モジュールを変更して、代わりに AST から Haskell ソース コードを生成することを検討しましたか?

于 2011-06-02T10:24:13.433 に答える