タグ

ブックマーク / karetta.jp (2)

  • Karetta|Gaucheプログラミング(立読み版)|すべてリストである

    Scheme言語のリストには構文としての側面とデータ構造としての側面の2つがあります。ここではまず構文としての側面から見ていき、次にデータ構造としての側面に着目します。 cons手続きと対(pair) Scheme言語の基的なデータ構造は対(pair)です。対とは2つのデータが組になったデータ構造です。「対」は「たい」ではなく「つい」と読んでください。 Scheme言語では対を使ってリスト構造を表現しています。対を作るにはcons手続きが使えます。対を作るcons手続きはScheme言語で非常に重要な手続きのひとつです。 gosh> (cons 1 2) (1 . 2) cons手続きは対(pair)を作ります。Scheme言語では対を.(ドット記号)で表現します。この記法で対を表現したとき、特にドット対と呼ぶことがあります。 対を図で示してみます。この図は「計算機プログラムの構造と解釈

    Chisei
    Chisei 2011/01/02
    lispでのconsについて
  • Karetta|Gaucheプログラミング(立読み版)|lambdaは空気のような存在である

    Schemeプログラマにとってlambdaは空気のような存在です。Schemeプログラマはいわば呼吸するようにlambdaを書くのです。 lambda式を書いて「手続き型の値」を返す lambda式は一般的に次の構文をとります。 (lambda 引数仕様 式体) たとえば、2乗を計算するlambda式を書いてみましょう。 (lambda (x) (* x x)) lambda式が返す値は手続き(procedure)型の値です。Gaucheの対話型インタプリタでこれを確かめてみましょう。 gosh> (lambda (x) (* x x)) #<closure #f> closureは手続き型を表します。 手続きとは「手続き型の値」に名前を付けたもの lambda式を実引数に作用させると2乗が計算されます。 gosh> ((lambda (x) (* x x)) 4) 16 これはsqua

    Chisei
    Chisei 2010/11/15
    lambdaは空気のような存在。なるほど。
  • 1