タグ

schemeに関するkamipoのブックマーク (31)

  • 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
  • Practical Scheme

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

    Practical Scheme
  • Introduction to Scheme Programming Language

    まえがき 世の中には様々なプログラミング言語があるが,文書では,Lispプログラミン グ言語の一つの方言であるScheme(スキーム)を紹介する.ここではSchemeを直観 的に理解することをまず目標として,形式的に完全であるかどうかにはこだわら ないことにする. ※見た目にもあまりこだわらないことにする:-) より詳しくは, 湯浅太一 「Scheme入門」 岩波書店 K.ディヴィグ著 / 村上雅章 訳 「プログラミング言語 SCHEME」 ピアソン・エデュケーション 2000 猪股俊光, 益崎真治 「Schemeによる記号処理入門」 森北出版 1994 D.P.フリードマン, M.フェライセン 著/ 元吉文男, 横山晶一 訳 「Scheme手習い」 マグロウヒル出版 1990 H. Abelson, G.J. Sussman and J. Sussman 著 "Strucuture a

  • ひげぽん OSとか作っちゃうかMona- - 末尾再帰

    最近一部で盛り上がっている「末尾再帰」について自分の理解を確認するのも兼ねて書いてみます。 (そもそも自分がふったのがきっかけっぽいので)。 上級者の方は間違い等に厳しくつっこんでもらえると助かります:-) 背景 自分が末尾再帰を知ったのは多分Schemeの勉強を始めた頃だったと思います。 例えばSICPというでは20ページあたりにこっそりと出てきます。 そのころの理解はかなり浅いもので「ふーん。」程度でした。 さて後日Schemeの処理系を実装することになりR5RSというSchemeの仕様書を読んだところ Scheme の実装は真正に末尾再帰的(properly tail-recursive) であることが要求されている。これは,たとえ繰返し計算が 構文的に再帰的手続きで記述されているときでも,定数空間 でその繰返し計算を実行することを可能にする とあり末尾再帰のことを詳しく知る必要性

  • Scheme:なぜSchemeにはreturnが無いのか

    あるいは、なぜcall/ccがプリミティブなのか、に関する一考察 (Shiro: 「なんでも継続」に入れようかと思ってたネタだけど、 あっちがいつ書けるかわからんので、忘れないようにこっちにまとめとく) (話の流れがあるので、誤りの修正以外のコメントは途中ではなく、一番下にお願いします) returnはどこだ? Aliceは、リストlisと述語手続きpredを取り、lisの各要素に順にpredを適用して、 predが真の値を返したら直ちにその要素を返すような関数findを 書くことを考えた。 (findは便利なので、実はsrfi-1に定義されてるけど、 Aliceはまあ自分の勉強のために書いてみることにしたと思いねえ)。 AliceはPerlなら良く知っている。Perlならこんな感じで書けるはず。 sub find { ($pred, $lis) = @_; foreach $elt (@

    Scheme:なぜSchemeにはreturnが無いのか
    kamipo
    kamipo 2009/08/28
    [call/cc]
  • 11. 継続 | Schemeへの道

    継続(continuation)とは,式を評価している途中のある時点で,『いま得られた 値を使って,この後は何を計算するのか』を表すものである.たとえば,Scheme の関数呼びだしの式を評価する際には,まず関数とその引数を評価して,その 後で関数に引数を適用する. ==> (+ (* 1 2) (* 3 4)) ;; ==> (+ 2 12) ;; ==> 14 14 この式の場合,まず「+」,「(* 1 2)」,「(* 3 4)」を評 価したのち,「(+ 2 12)」を評価する. 各部分式の評価が左から右へ進むものとすると, たとえば,「(* 3 4)」を評価した後にするべき計算,つまり継続は, 『いま得られた値に2を加える』 である.この式の評価を完了するためには, Schemeのシステムは,この継続を知っていなければならない. 継続は,「何を評価して,その値によって次には何を行う」

    kamipo
    kamipo 2009/08/28
    [call/cc]
  • Scheme、Common Lisp、Emacs Lispの比較

    「王女アテー姫を含めてハザールの男女は、 この能力によって朝ごと変身を済ませ、 そのたびに、見たこともない斬新な顔で立ち現れる。 だから近親者同士でさえ見分けがつかないほどだ。 旅行者の見聞はこれとはまったく異なり、ハザールの顔つきはどれもそっくりで、 しかも歳を重ねても容貌が変わらない。それゆえ人違いの混乱や厄介が絶えない。 どちらにせよ、結果は同じことで、ハザール族の顔はまず覚えられないし、 覚えても無益となる。」 ミロラド・パヴィチ「ハザール事典」 Lispには数限りないほどの方言がある (例えば、 http://dreamsongs.com/NewFiles/Hopl2Slides.pdf とか参照)。 そのなかで普及している Lispというと、 Scheme、Common Lisp、Emacs Lispの3つだろう。 ユーザの多さでいうと、多い順に Emacs Lisp、Comm

  • 最も todo と fix meが多いプログラミング言語は Python かもしれない - higepon blog

    プログラムを書いていると todo としてコメントを入れることがあります。 現時点ではこのコードは書けない 余裕のある時にやろう 汚いコードを書いていることに対する言い訳 など理由は様々。 todo コメントの例としては // todo check hogehoge hoge(); のようなものが挙げられます。 ふと思いついて「最も多くソースコードのコメント中に todo と書かれている言語は何か?」をGoogle Code Searchを利用して調べてみました。 行コメント限定ですが結果は以下の通りです。 lang todo % todo/all scheme 1.4% 1000/71000 c++ 0.2% 12300/6280000 c# 0.2% 13600/6280000 fortran 0.0% 100/233000 perl 2.1% 28600/1370000 php 1.

    最も todo と fix meが多いプログラミング言語は Python かもしれない - higepon blog
  • 聞いてくれ Mosh に信じられないことが起きたんだ - higepon blog

    shiro さんにアドバイスいただいた件。top-level の束縛の lookup を Gloc 方式に変更。 そして make bench (ベンチマーク)。 グラフは Y 軸が msec 、x 軸は revision 番号。 リリース当初から計測している fib(31), tak, triangle, takl において Gauche より速くなった。グラフの角度おかしいだろ。常識的に考えて。Ypsilon には tak で負けているがそれは問題ではない。 当に驚いて腰を抜かしそうになった。この事件の衝撃度が伝わるだろうか。この日を夢見てずっとチューニングしてきたのだがこんな展開が待っていようとは。 いずれ抜かれるのかもしれないが、当にこれはすごい事なんだよ。そう叫びたい。

    聞いてくれ Mosh に信じられないことが起きたんだ - higepon blog
  • GaucheでRDBプログラミング

    Lispの一種であるScheme。いくつかある処理系の中でも気軽にスクリプトを書けるGaucheでLispの世界を体験してみよう(編集部) 皆さま、明けましておめでとうございます。年もよろしくお願いいたします。 さて、今回はGaucheを使って、より大きなプログラムを書いていきます。Lispプログラミングの例題として、パズルのような難しいアルゴリズムを使ったプログラムもありますが、多くの読者の方はリレーショナルデータベース(RDB)をベースにしたWebアプリケーションを作られていると思います。 そこで、今回と次回でWebアプリを書いてみたいと思います。今回はRDBプログラミングを中心に学んでいきます。 Gaucheのデータ型とオブジェクトシステム 今回の主題であるWebプログラミングに入る前に、少しGaucheの基的な事柄について学んでおきます。 GaucheはLispであり、関数が主

    GaucheでRDBプログラミング
  • ちょっと変わったLisp入門 - @IT

    Lispの一種であるScheme。いくつかある処理系の中でも気軽にスクリプトを書けるGaucheでLispの世界を体験してみよう(編集部) 「Gaucheでメタプログラミング」と題して、これからGaucheを使ったプログラミングの連載を書かせていただきます吉田裕美です。よろしくお願いいたします。 Gaucheとは 今回の連載で取り上げるGaucheはハワイ在住の日ハッカー、川合史朗さんが作った、Lispの一種であるSchemeのオープンソース処理系です。 Gaucheの特徴は、PerlRubyのように気軽に使える軽い処理系だということです。Perl同様に正規表現や文字列操作が行え、ちょっとしたツールの作成にも使えます。しかし、非常に強力なCommon Lisp風オブジェクトシステムを持ち、Lispならではのマクロに加え、Webやグラフィックスなどの豊富なライブラリも持っているので実用

    ちょっと変わったLisp入門 - @IT
  • Gaucheでプログラミング

    Lispの一種であるScheme。いくつかある処理系の中でも気軽にスクリプトを書けるGaucheでLispの世界を体験してみよう(編集部) 今回は、Gaucheを初めて使ってみようという方に向けて、Gaucheのインストールと、簡単なプログラムを題材に、どうやってGauche(Lisp)流のプログラムを書いていくかを取り上げてみます。 Gaucheのインストール GaucheはApacheやRubyと同様にオープンソースのソフトウェアですので、自分でダウンロードしインストールする必要があります。 GaucheのWebサイトのダウンロードページから最新のソースを取得できます。現在のところサポートされているOSはUNIX系が中心で、Windowsではすべての機能を使うことができません。この連載でも、Mac OS Xを含むUNIX系のOSで動かす前提で進めていきます。 Gaucheのインストール

    Gaucheでプログラミング
  • まっつんチャレンジ 1: Kahuaによるユーザ登録アプリケーションの実装 第1回 | ITEMAN Blog - アイテマンブログ

    "One head cannot contain all wisdom." -- The Olduvai Cycle (Systems University Archives) こんにちは。まっつんこと松藤です。この度、厳正なる社内会議の結果、「まっつんチャレンジ」シリーズを始めることになりました。このシリーズでは私が今までにやったことがなく、かつ(私にとって)難易度の高いお題にチャレンジしていきます。私がチャレンジしていく中で迷ったり、間違ったりする部分もすべて書いていく予定です。もしかすると達成できなかったり、一部をコメントアウトして動作させるといったインチキを行う可能性もあります。ちなみに「まっつんチャレンジ」のお題は自分で考えるのではなく、ITEMANから与えられることになっています。 さて、第1回目の今回のお題は「Kahuaによるユーザ登録アプリケーションの実装」です。いきなり「

  • GaucheによるSchemeプログラミング

  • http://tips.lisp-users.org/scheme/index.cgi

  • http://tips.lisp-users.org/scheme/

  • 人気の「shibuya.lisp」動画 84本 - ニコニコ動画

    Shibuya.lispテクニカルトーク第4回 (2009/11/07) 近山隆さんによる「1980年前後のLisp事情とUtiLisp (3/4)」です。次: 「1980年前後のLisp事情とUtiLisp (4/4)」 (sm87... string=とかconcatenateとか? チューリング経由ではなく、ゲーデル直伝とする説か OS/360ってそん...

    人気の「shibuya.lisp」動画 84本 - ニコニコ動画
  • Gaucheをはじめてみませんか?

    Gaucheとは 連載では、今注目のプログラミング言語「Gauche」について解説しながら、簡単なWebアプリを作っていきます。Gaucheとは、ハワイ在住の日ハッカー「川合 史朗」さんが作ったLispの一種である、Schemeの処理系です。オープンソースで開発されています。 Gaucheの特徴は、Perlのように気軽に使える軽い処理系でありながら、正規表現、CommonLisp風オブジェクトシステムなど、Scheme標準にはない拡張機能や豊富なライブラリを持ち、実用的なプログラミングが行える点です。 最近「Gauche」に関するも出版され、「第4回:都内大手3書店の3月ベスト3発表!(http://www.thinkit.co.jp/article/49/4/2.html)」でも紹介されているように売れ行きも好評です。それは、なぜでしょうか? 筆者はLisp、特にSchemeの持

  • ネイルで失敗しないためのネイリスト選びの極意とは?

    新社会人になって、ついにネイルができるようになった!でも、初めてネイルサロンに行くときには、何を基準に選べばいいの?ネイリストさんは?そんな方が多いと思います。 今回は、初めてネイルサロンに行く方のために、ネイルサロン、ネイリストの選び方について解説します。 ホームページの内容を確認 始めてネイルサロンに行く方は、何を基準にすればいいか分からないと思います。 そんな方は、まずお店のホームページを見てみましょう。 そのときに確認したい点がいくつかあります。 メニュー内容や案内が明記されているか ネイルのデザインやカラーのサンプルが掲載されているか 店内の写真が掲載されているか ネイリストの専門知識や技術が紹介されているか 少なくとも、この程度は確認しておきたいでしょう。 ホームページに掲載されている情報から、自分が合いそうなネイルサロンを見つけてみるのが最初は良いでしょう。 しっかりとした電

  • Shibuya.lisp

    Mahjong Ways 3 adalah permainan slot online yang menarik yang menghidupkan permainan ubin klasik Tiongkok dengan sentuhan modern. Dikembangkan oleh PlayStar, game ini menawarkan pengalaman unik dan menarik dengan sistem pembayaran kluster dan gulungan berjatuhan. Gambaran Umum Permainan Gameplay dan Fitur Mahjong Ways 3 menonjol dengan mekanisme permainan inovatifnya: Fitur Bonus Permainan ini men