タグ

schemeに関するigrepのブックマーク (5)

  • 限定継続いろいろ | 雑記帳

    このブログでは限定継続について過去に何回か記事を書きました: LunarMLと継続限定継続と例外とモナド 今回、LunarML向けのVMに限定継続を実装してみて理解が深まったので、改めて記事にします。 限定継続:スタックを使ったざっくりとした説明 今回はスタックを使って限定継続をざっくりと説明してみます。 関数という概念を持つプログラミング言語では、スタックを使って関数の呼び出しを管理することが多いです。コールスタックとか、スタックのバックトレースとか言いますよね。ここではネイティブのスタックか仮想マシンのスタックかというのは問いません。 関数を呼び出すと、フレームと呼ばれる領域がスタックに確保されて、関数への引数やローカル変数はそこに確保されたりします。 例えば、以下のプログラムを考えます: void g() { // すごい計算 } void f() { double j; g();

    igrep
    igrep 2022/10/30
    LunarML, Wasm stack-switching proposalを試しに実装するのに良さそう(どっちも詳細詳しくないので知らんけど)
  • RnRS

    igrep
    igrep 2018/06/06
  • SRFI 49: インデントにより構造化する構文

    著者 Egil Mler http://redhog.org/ / redhog@redhog.org 著者 この SRFI は現在「確定」の状態である。 SRFI の各状態の説明については ここ を参照せよ。 この SRFI に対するコメントは、 srfi minus 49 at srfi dot schemers dot org 宛てにメールで送信してください。 このメーリングリストに参加する方法については、 ここの説明 を参照してください。 この SRFI に関する議論については メーリングリストのアーカイブ を参照せよ。 この SRFI に関する確定後の議論については メーリングリストのアーカイブ を参照せよ。 受理: 2003/11/23 草案: 2003/11/30-2004/01/28 改訂: 2005/05/29 概要 この SRFI では、S-式と同等の記述力を持つ、

    igrep
    igrep 2015/06/12
    オフサイドルール付きのLisp, やっぱり既出だった。
  • Racket

    #lang racket/gui (define my-language 'English) (define translations #hash([Chinese . "你好 世界"] [English . "Hello world"] [French . "Bonjour le monde"] [German . "Hallo Welt"] [Greek . "Γειά σου, κόσμε"] [Portuguese . "Olá mundo"] [Spanish . "Hola mundo"] [Thai . "สวัสดีชาวโลก"] [Turkish . "Merhaba Dünya"])) (define my-hello-world (hash-ref translations my-language "hello world")) (message-box "" my

    igrep
    igrep 2015/05/05
    ほんまいろいろつくるなぁ
  • CRubyで末尾最適化を使った再帰 - yarbの日記

    Schemeなんかと違って、言語としてのRubyは末尾最適化(Tail Call Optimization)の実装は必須ではないけど、処理系としてのCRubyは2.0.0からオプション扱いで入っている、という話。2012年の6月ごろにはMatzさんはTCOをデフォルトにするという考えもあったようだけど、ここにある議論によれば、Ruby 2.0系のマイナーバージョンまで先延ばしになった模様。性急にTCOを入れなかった理由は、 バックトレースを失うので一般的なRuby利用者に影響が大きい set_trace_func()のサポートが大変 文法。ちゃんとドキュメントに落としこむのが難しい。これは半分冗談、半分気 ということらしい。JRubyでも、JVMがサポートしない限り実装が難しいという(あれ? Clojureは明示的な末尾呼び出しの最適化をやってるように思うけど)。 Rubyはイテレータで

    CRubyで末尾最適化を使った再帰 - yarbの日記
  • 1