タグ

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

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

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

    mhrs
    mhrs 2009/04/05
    ドット對とリスト。
  • Karetta|プログラミングGauche

    Copyright (c) 2006-2007 Shiro Kawai, Kahua project. http://www.oreilly.co.jp/books/9784873113487/ プログラミングGauche Kahuaプロジェクト 著 川合 史朗 監修 2008年03月14日 発売予定 524ページ 定価3,360円 ISBN978-4-87311-348-7 Mac OS X 10.5.x (Leopard)でKahuaが動かない問題 Kahua-1.0.7.2はMac OS X 10.5.x (Leopard)でテストに失敗します。 Mac OS X 10.5.xではKahua-1.0.7.3以上を使用してください。 http://www.kahua.org/show/info/Download Windows用Gaucheインストーラ http://sourcefor

    mhrs
    mhrs 2009/04/05
    “Windows用Gaucheインストーラ”、“サンプルコードのダウンロード”、“正誤表”、“目次”。
  • Karetta|[お題] サンタクロース問題

    オリジナルは A new exercise in concurrency 問題はこんな感じ. ねぼすけサンタがいる.休日が開けて,9頭いるトナカイ全員が戻ってくるか,10人いるこびとさんのうち3人がやってきて起こしてくれるまでずっと寝てるというわけだ. 9頭組のトナカイに起こされたら,ハーネスをつけてソリを引かせてオモチャを配りに行く.配りおわったらトナカイたちのハーネスを外す.そしたらトナカイたちは休日だということでどこかにでかけてしまう. 3人組のこびとさんたちに起こされたら,会議をひらいて次期のオモチャをどうするかをこびとさんたちに伝授する.すんだらこびとさんたちは自分の仕事にもどっていく. トナカイ9頭組とこびとさん3人組が同時にサンタが起きるのを待ってる場合 にはトナカイの方を優先する. トナカイもこびとさんもまたそのうちに三々五々やってくる. 一旦やってきたトナカイは9頭揃っ

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

    Scheme では計算というのは式の値を求めることです。 Scheme の式は以下のように表現されているものです。 ひとつ塊(シンボルおよびリテラル)として表現されるもの(この構文のこと をアトムということがあります) 複数の式を括弧((と))で囲って表現されるもの(この構文のこ とをリストということがあります) 1. により、map、string=?、*、-5、3.14、 "The Wizard Book"、#\a などはどれも式です。 2. により、(- 1 (* 2 3))、 (string->list (string-map char-upcase "wikiwiki")) なども式です。 式が表す値に名前をつけることを定義といいます。Schemeでは式が表す値に 名前を付けることによって、複雑な構成の式をひとつのものとして抽象化して 表現することができます。 計算機に計算をさせる

    mhrs
    mhrs 2007/05/16
    「すべて式とはどういうことか」「代入がなくても計算はできる」
  • Karetta|Gaucheプログラミング(立読み版)

    はじめに書の構成 (1)書の対象読者書の表記書の使い方執筆時点でのGaucheバージョン謝辞第1部: 思想LispとScheme (4)Gaucheの特徴 (1)すべて式であるすべてリストである (1)lambdaは空気のような存在である (2)プログラミングとは名前付け(bind)であるすべて再帰である (2) (2)Schemeのすごい点 (4)すべてオブジェクトである (もしそれがお望みなら)Gaucheの設計思想や誕生の背景Schemeの評価モデルとは? (3)「Lisp脳」の謎に迫る - Schemeプログラマの発想第2部: 実用Schemeスクリプトを書こうSchemeスクリプトを書く (1)コマンドライン引数の値を得るユニットテストを書く (1)CGIを書こうSchemeスクリプトをCGIとして実行するwww.cgiライブラリを利用する (1)手軽にHTMLを生成する

  • Karetta|Gaucheプログラミング|「Lisp脳」の謎に迫る - Schemeプログラマの発想

    この原稿の最新版について この原稿に加筆した最新版が書籍「プログラミングGauche」に収録されています。 引用や紹介をされる方はなるべく書籍収録版を参照してください。 他の言語のプログラマがSchemeプログラムを書くとき、 どうしても発想が手続き的(procedural)になりがちです。 LispプログラマやSchemeプログラマの発想は手続き的な発想とはどうも違うらしい、 ということは分かるのですが、具体的に何が違うのでしょうか? ここではこの謎に迫ってみましょう。 実例 例えばこんな例題があります。 1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。 どうしてプログラマに・・・プログラムが書けないのか? (原題: Why

    mhrs
    mhrs 2007/05/13
    Fizz-Buzz問題を例に“手続き的な発想”と“Schemeプログラマの発想”の違ひを見る。
  • 1