タグ

schemeに関するcho45のブックマーク (7)

  • Scheme 入門 18. 非決定性

    1. 初めに 非決定性は問題を記述するだけで答えが得られるようにするアルゴリズムです。 プログラムは選択肢の中から条件に合うものを自動的に選び出します。 この手法を使うと論理プログラムを容易に書くことができます。 例えば、 > (let ((i (amb 4 6 7)) (j (amb 5 8 11))) (if (prime? (+ i j)) (list i j) (amb))) (6 5) のようにすると '(4 6 7) と '(5 8 11) のうちから二つの数の和が素数になる組の1つを返します。 (amb 4 6 7) は、式が値を返すように 4, 6, 7 の中から適切に値を選び、同様に、 (amb 5 8 11) は、式が値を返すように 5, 8, 11 の中から適切に値を選びます。 (amb) は選ぶべき値が無いので失敗を表します。 実際は、amb は深さ優先の探索をして

    cho45
    cho45 2008/08/09
    「非決定性は問題を記述するだけで答えが得られるようにするアルゴリズムです」
  • ゆの in Scheme - 月の塵

  • おまけ: Scheme on YARV - ひとり勉強会

    これで今日のYARV勉強会はおしまいです。 って、これではやけに短くなってしまったので、おまけとして、るびま で触れられていた 当は、今回何か簡単な言語のコンパイラを作ろうと思っていたのですが、間に合いませんでした。誰か Scheme あたりで挑戦してみませんか。かなり簡単だと思いますよ。 これをやってみようと思います。 yasm.rb 記事で紹介されているyasmモジュールがRubyのtrunkに見つからなかったので、旧YARVのレポジトリ http://www.atdot.net/svn/yarv/trunk/lib/yasm.rb から拾ってきて適当に修正して使っています。変えたのは、YARVの仮想マシンオブジェクトを表すクラス名と - module YARVCore + class VM - YARVCore:: + VM:: メソッド名としてSymbolを渡すと怒られるみたいだ

    おまけ: Scheme on YARV - ひとり勉強会
    cho45
    cho45 2007/11/13
    これはすごいおもしろい
  • インクリメンタルサーチ対応 Gauche ユーザリファレンス

    フレームに対応したブラウザが必要です。

    cho45
    cho45 2007/10/23
    インクリメンタルサーチつき
  • Practical Scheme

    このページでは、プログラミング言語Schemeの紹介、および 自作のSchemeのライブラリやアプリケーションの紹介をしてゆきます。 特に、ファイルをパーズしてテキストファイルを生成したりとか、 プロセスを監視したりとか、ちょっとしたGUIをでっちあげる と言った、職業プログラマとしてやってく上で避けて通れない雑用に便利な ライブラリが中心になる予定です。 SchemeはLisp系の言語で、見かけはLispに良く似ています。 Lispと聞いたら人工知能用言語だとか、もう古くさい言語だとか思われることも 多いんですが、CommonLispで書かれた実用的なアプリケーションはいろいろ ありますし、Schemeも拡張言語としてそれなりに使われています。 ただ、いかんせんマイナーな言語であることは間違いなく、メンテできる人が居ない とか他に分かる人が居ないという理由で採用が見送られることがあるのは

    Practical Scheme
  • Practical Scheme

    Shiro Kawai 11/20/2000初出、3/29/2002更新 Cに慣れたプログラマがSchemeのコードを見て面らうことのひとつは、 無名の関数やローカル関数の多用だろう。 特に実行効率に敏感なプログラマにとっては「関数呼出しは高価」 という感覚が染み着いているため、 至るところに散りばめられたlambdaに眉をひそめてしまうようだ。 しかしSchemeにおいては、 コード上に関数が書いてあるからといって 実行時にスタックフレームの生成やレジスタの退避などのオーバヘッドが起こるとは限らない。 例えば関数の最後に別の関数を呼び出す末尾呼び出し(tail call) はただのjumpインストラクションに置き換え可能だ。 ここでは、Cプログラマを対象に、 lambdaで生成される関数群が実際にどのように実行され得るのかを書いてみたい。 (なお、Schemeの規格ではlambdaフォ

    Practical Scheme
  • Practical Scheme

    Shiro Kawai 7/3/2000初出、3/29/2002更新 まあとりあえずカッコは我慢しよう。ラムダとやらも、関数ポインタ+環境データ ということで納得しよう。しかし、Schemeのループ構文(do)は許せないなあ。 ごちゃごちゃしてるし、途中で脱出できないし。 CやPerlのforやwhileの方がずっと使いやすいね。 え? doなんて使わない? じゃあどうやってループを書くんだ? 消えるループ 簡単だけど、よくありそうな例として、こんなのを考えてみよう。 入力テキストの行数を数える関数count_linesを書きたい。 Cで書くとすれば、こんな感じだ。 /* 例1 */ int count_lines(void) { int count = 0, c; for (c=getchar(); c!=EOF; c=getchar()) { if (c == '\n') count+

    Practical Scheme
  • 1