タグ

schemeに関するHashのブックマーク (33)

  • 弱LisperがMITでSICP(シクピー)を受講した結果 - Qiita

    SICPとは何か Structure and Interpretation of Computer Programsという古めかしい表紙のをご存知でしょうか? これはもともと、マサチューセッツ工科大学(Massachusetts Institute of Technologies; MIT)の電気工学および計算機科学(Electrical Engineering & Computer Science; EECS)系の学部の授業の一目として提供されていた同名の授業から発生した教科書です。教科書は無料公開されています。 HTML版 http://mitpress.mit.edu/sicp/full-text/book/book.html Kindle版 https://github.com/jonathanpatt/sicp-kindle PDF版 https://github.com/s

    弱LisperがMITでSICP(シクピー)を受講した結果 - Qiita
    Hash
    Hash 2015/02/04
    SICP, 本場ではしくぴーって呼ぶの衝撃的 || 教科書から発展した内容も扱ってて面白い
  • Scheme:call/ccと副作用

    c.l.sで興味深い議論が進行していたのでメモ。 purely functional Lisp + call/cc = ? 発端は、Nils M Holmの 「Purely functionalなマイLispにcall/ccをつけてみたよ」 という投稿。 それに対し、Schemeの大御所達から 「call/ccは、副作用を生じるよ」 と突っ込みが入る。 言い替えれば、「set!などの明示的な副作用オペレータを一切持たない purely functionalなLispに、call/ccを導入すると、それはもはや purely functionalではなくなる」ということ。 実例 これは簡単な例によって示すことができる。szgygによる例: (let ((f (lambda (x) (call/cc (lambda (k) k))))) (cons (f 0) (f 0))) (f 0)の2回

    Scheme:call/ccと副作用
  • 再帰的な無名関数 - ヒビノキロク

    次の関数は再帰的な関数だ。 (define fact (lambda (n) (if (= n 0) 1 (* n (fact (- n 1)))))) この関数は内部で自分自身を呼び出しているので、普通の方法では無名関数として定義できない。 こういう場合、不動点オペレータというものを使うと以下のようにしてfactを定義することができる。(fact関数の中で直接factという名前を使っていない所がポイント) (define fact (let ((Y (lambda (F) ((lambda (s) (F (lambda (x) ((s s) x)))) (lambda (s) (F (lambda (x) ((s s) x)))))))) (Y (lambda (f) (lambda (n) (if (= n 0) 1 (* n (f (- n 1))))))))) ここで天下り的に出て

    再帰的な無名関数 - ヒビノキロク
  • scheme quiz time! — wingolog

    Ready? If you know Scheme, you should think on this a little bit before looking at the answer. I'll wait. OK! We know that in both functions, two calls are made to the get function, in the same order, and so really there should be no difference whatsoever. However there is a difference in the continuations of the get calls. In test1, the continuation includes the identity of the result vector -- b

  • http://www.iro.umontreal.ca/~gambit/Sorenson-Clojure-to-Native-via-Scheme.pdf

  • ゲーム制作でのRacketの使われ方 - .mjtの日記復帰計画

    RacketCon 2013( http://con.racket-lang.org/2013/ )で、Naughty Dogの人による発表があったらしい。NDはPS2時代にFranzのLispで作ったGOAL( http://www.franz.com/success/customer_apps/animation_graphics/naughtydog.lhtml )でも知られるが、スライドにあるように、PS3時代でもRacketを使ったC++ソース生成でLisp(ただしScheme)を使い続けている*1。(過去にもUC2の事例がある: http://www.gameenginebook.com/gdc09-statescripting-uncharted2.pdf ) http://con.racket-lang.org/2013/danl-slides.pdf スライド S式によっ

    ゲーム制作でのRacketの使われ方 - .mjtの日記復帰計画
    Hash
    Hash 2013/10/27
    RacketでC++コードの生成とな
  • The GNU Operating System and the Free Software Movement

    What is the Free Software Movement? The free software movement campaigns to win for the users of computing the freedom that comes from free software. Free software puts its users in control of their own computing. Nonfree software puts its users under the power of the software's developer. See the video explanation. What is Free Software? Free software means the users have the freedom to run, copy

    Hash
    Hash 2013/10/25
    Kawaの末尾最適化について
  • GNU Make 4.0にGNU Guileが組み込まれた

    GNU Make 4.0 released GNU Make 4.0がリリースされた。 今回のリリースでは、GNU MakeはSchemeの実装であるGNU Guileを組み込んだ。これにより、Makefileの中でSchemeが書けるようになる。 その機能は、GNU Make ManualのGuile Functionの項目で説明されている。まだ、オンライン版のGNU Make Manualが2010年から更新されていないので、コミット時のドキュメントの差分のリンクする。 8.13 The `guile' Function 具体的な組み込み方法としては、make側にguileという関数が追加され、この引数に文字列を与えると、SchemeとしてGuileで処理されるようになる。おそらく、このように。 Hello.o : $(guile (string-append "hello" ".c"

    Hash
    Hash 2013/10/10
    そういう使い方するのか
  • GNU Guile - Wikipedia

    GNU Guile は、プログラミング言語 Scheme のインタープリタ/バーチャルマシン。1993年に初めてリリースされた[3]。 GuileはPOSIXシステムコールのモジュール化された拡張やAPL アレイの機能などを含み、オブジェクト[4] ライブラリとしてパッケージングされている。「Libguile」を使うことで、Guileを他のプログラムの中に組み込んで、 他言語との密接な統合が可能なインターフェースとして使用することができる[5]。 名前「Guile」は「GNU's ubiquitous interactive language for extension」から来ている。後付けのものではないが(注を参照)公式ウェブページの冒頭にあらわれたのは2011年の春頃である[6]。 GuileはGNUプロジェクトの「公式の」 拡張言語であるが、 2006年の時点で、人気のあるプロジェク

    GNU Guile - Wikipedia
  • clojure-scheme: Compiling Clojure to Native Code via Scheme

    Clojure's Journey: From Simplicity to Enterprise Maturity Jordan Miller discusses the evolution of the Clojure ecosystem, from Rich Hickey's initial vision tackling complexity to its current status as a mature enterprise solution. He explains key philosophies, highlights pivotal moments like the "Simple Made Easy" talk, and showcases the vibrant Clojure community and its innovative tools.

    clojure-scheme: Compiling Clojure to Native Code via Scheme
    Hash
    Hash 2013/08/09
    Clojureで書いてScheme, C, あとObjective-C(?)にコンパイルするもの
  • t, nil, '(), #t, #f

    ばばろわ @valvallow (car '()) ; -> nil ってほんと良いよな。(define (hoge proc lis)(if (null? lis)lis(proc lis))) みたいのないかな。 2010-05-19 17:18:02

    t, nil, '(), #t, #f
  • はてなブログ | 無料ブログを作成しよう

    京都市の美味しいパティスリーを紹介したい 前編(北側エリア) こんばんはぁ、ぺのぽすです 京都大学に入学してそろそろ4年目、趣味のパティスリー巡りをしてて気づいたことがあります。 京都市のパティスリー、レベル高すぎ!! 京都市はホントどこに行ってもで~~ら美味しいパティスリーがあり大体の観光、ご飯のついでに激ウマ…

    はてなブログ | 無料ブログを作成しよう
    Hash
    Hash 2013/01/11
    Gauche使って日常の作業をするために必要なもの
  • Project EulerにGaucheで挑戦する話 - Qiita

    Lisp Advent Calendar 19日目担当の @naoya_t です。 「昨晩@g000001さんと回転寿司屋でLispについて話した」(※実話)とかでもいいんですが、予告通りProject Eulerの話を書こうと思います。 ちょっと投稿が遅くなりましたが、インド標準時(UTC+05:30;日時間より3時間半遅れています)でぎりぎり19日ということでお許しください。 はじめに 記事では、特定の問題の解答や、それを導くプログラムはProject Eulerの参加規約に抵触するため掲載しません。 Project Eulerとは 偉大な数学者レオンハルト・オイラーの名を冠するProject Eulerとはいったい何なのでしょうか? 英語WikipediaでProject Eulerを開いてみると Project Eulerは、コンピュータプログラムで解くことを意図した計算問題

    Project EulerにGaucheで挑戦する話 - Qiita
    Hash
    Hash 2012/12/20
    最近挑戦し始めたけど意外に難しい
  • Difference between define, let and set!

    Hash
    Hash 2012/12/14
    defineとset!の違い
  • Rubyで末尾再帰最適化をする。 - Homoiconic Days

    元ネタはPythonで末尾再帰最適化をする。 - wasabizの日記。Pythonのデコレータを使って、末尾再帰で書かれた関数に対して末尾呼び出し最適化(TCO)を行う、というものです(どうやってTCOを実現しているかの詳細についての説明はここでは割愛します)。 さて、元エントリでは「Pythonがすごいからこんなことができるんだ」という感じで書かれていますが、タネさえ分かればいろんな言語でできそうだということが分かったので、他の言語でも試してみることにしました。 まずはじめに、試しにScheme版を書いてみたものの、そもそもSchemeはTCOを勝手にやってくれるのであまり意味のない例になってしまいました。 その後、Scheme版をだいたいそのままRubyに書き直したのが以下のRuby版です。 class Module def tco(name) continue = [] first

    Rubyで末尾再帰最適化をする。 - Homoiconic Days
  • Clojure - Differences with other Lisps

    This information is provided for programmers familiar with Common Lisp or Scheme. Clojure is case sensitive Clojure is a Lisp-1 () is not the same as nil The reader is side-effect free Keywords are not Symbols Symbols are not storage locations (see Var) nil is not a Symbol t is not syntax, use true The read table is not accessible to user programs let binds sequentially do is not a looping constru

    Hash
    Hash 2012/12/03
    Clojureと他のLispとの違い. "There is no tail-call optimization, use recur."
  • Scheme 入門 9. 入出力

    1. 初めに 前回までで、関数定義について一通り説明したので、対話的な環境で関数を書いて、動かすことが できるようになったと思います。 今回は入出力について説明します。入出力ができればかなり実用的なプログラムを書くことができます。 2. ファイルからの入力 2.1. open-input-file, read-char, eof-object? 入力用にファイルを開くには (open-input-file filename) を使います。 この関数は入力用ポートを返します。 ポートから1文字読み込むには (read-char port) を使います。 read-char はファイルの終端に達すると eof-object を返すので、 eof-object? を使って、ファイルが終わったかどうか調べます。ファイルを閉じるときは (close-input-port port) を使います。 フ

    Hash
    Hash 2012/11/13
    io
  • Practical Scheme

    Shiro Kawai まだ下書き Schemeの特徴をあげるときに、「継続」や「call/cc」が出て来ないことはない。 でも、R5RSのcall/ccの項をいくら読んでも、どうもよくわからない。 call/ccを使えばC言語のbreakみたいなのとか、コルーチンとかいう スレッドもどきとかが書ける、というのはわかったけど、一体そういうのが書けて 何が嬉しいのか、そこんとこがピンと来ないんだ。 今、そこにある継続 プログラミングの世界の概念には、禅の公案のようなものがある。 それを説明する文章はほんの一文なのに、最初に目にする時、 その文は全く意味をなさない、暗号のように感じられる。 だがひとたびその概念を理解すると、 その概念の説明は確かにその一文で説明されているのがわかるのだ。 そんな、「分かれば分かる」という禅問答の中でも 「継続」は最も謎めいたものの一つと言えるだろう。 文献を紐

    Practical Scheme
    Hash
    Hash 2012/11/01
    継続とは気がつかないだけでそこにあるもの || shiroさんによる解説
  • Y コンビネータ(Combinator)を JavaScript で試す : Serendip – Webデザイン・プログラミング

    SICP(計算機プログラムの構造と解釈)の 問題4.21 にある Y コンビネータ(Combinator)を JavaScript で実装してみる。 デモ:Y Combinator with JavaScript – SICP(計算機プログラムの構造と解釈) 問題4.21 Factorial Factorial のスクリプトコード (function (n) { return (function (fact) { return fact(fact, n); })((function (ft, k) { return k == 1 ? 1 : k * ft(ft, k - 1); })); })(10) Fibonacci Fibonacci のスクリプトコード (function (n){ return (function (fib) { return fib(fib, n); })((f

  • chibi-scheme - Project Hosting on Google Code

    Minimal Scheme Implementation for use as an Extension Language https://github.com/ashinn/chibi-scheme Chibi-Scheme is a very small library intended for use as an extension and scripting language in C programs. In addition to support for lightweight VM-based threads, each VM itself runs in an isolated heap allowing multiple VMs to run simultaneously in different OS threads. There are no external de

    chibi-scheme - Project Hosting on Google Code
    Hash
    Hash 2012/10/29
    ちびスキーマ