タグ

lispに関するtaka222のブックマーク (31)

  • Island Life - 仕事でLispを使うこと

    About 南の島のプログラマ。 たまに役者。 Practical Schemeの主。 WiLiKi:Shiro 最近のエントリ 無限cxr高校受験Defense振り返ってみると2019年は色々学んで楽...覚えるより忘れる方が難しい(こともある)眼鏡のつると3DプリンタIris Klein Acting ClassSAG-AFTRA conservatory: Voice Acting創作活動って自分を晒け出さねばならないと...ループを使わずに1から100までMore... 最近のコメント shiro on 歳を取ると時間が速く過ぎるのは、新しいことに挑戦しないから? (2023/03/14)1357 on 歳を取ると時間が速く過ぎるのは、新しいことに挑戦しないから? (2023/03/01)ベアトリーチェ on ハイポハイポハイポのシューリンガン (2022/04/02)ベアトリーチ

    Island Life - 仕事でLispを使うこと
    taka222
    taka222 2010/02/17
  • Lisp的直積集合 - Functional Emacser

    可変なループ構造を必要とする問題*1に関しては、再帰やスタックを使って可変なループ構造に対応するのがプログラミングの常套手段ですが、そのような手段がそもそも必要になるのは、for文を動的に増やせないという問題に絡んでいます。それじゃfor文を動的に増やせばいいのではないか、と考えるかもしれませんが、CやJavaなどのevalがない言語ではそんなことできません。 ところが我らのLispにはevalがあります。しかもデータ構造がプログラムテキストであるため、動的にプログラムテキストを生成しても不自然に見えません*2。それでは、n個の集合から直積集合を生成する関数を例にとって考えましょう。 直積集合とは{1,2}と{3,4}から生成された{(1,3), (2,4)}{(1, 3), (1, 4), (2, 3), (2, 4)}ことを言います。詳しくはWikipediaを参照してください。 通常

    Lisp的直積集合 - Functional Emacser
    taka222
    taka222 2010/01/27
  • プログラミング言語NuでLispプログラミング ~S式の使い方~

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    プログラミング言語NuでLispプログラミング ~S式の使い方~
  • 11. 継続 | Schemeへの道

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

  • 10. 評価環境のモデル | Schemeへの道

    変数(関数)は,フレームの列からなる環境モデルによって管理されている. フレームとは,変数(もちろんlambda式によって記述される関数も含む)の集まりを格納する入れ物(テーブル)である. またフレームは,それを含む上位の環境(フレームの列)を指し示すポインタを持つ. つまり,あるフレームは別のフレームを指し,さらにそのフレームがまた別のフレームを指すというようにして,フレームの列が形成され,これが環境を定義する. 変数の値は環境を下位のフレームから上位のフレームへと順次調べることで評価される. この図で太い矢印がフレーム同士の関係を与えている.frame1は最上位のフレームであり上位のフレームを持たない. 上述の通り,環境は(矢印でつながれた)フレームの列で構成される. 例えば環境env4は,frame4,frame2,frame1の3つのフレームの列から構成されている. この環境env

  • プログラム言語とその他のメモ。

    プログラミングそのものは、あまり好きではない。 当然、実用的な内容はない。 2005年4月以降どうなるか不明。 Lispの(S式以外の)特徴(未完成) Scheme、Common Lisp、Emacs Lispの比較(未完成) 内容のわりに長い。 自己出力プログラムと自己参照プログラム 計算できない問題・関数について 停止問題とかbusy beaver関数の事など。 Schemeでラムダ計算 不動点オペレータについて 再帰的定義に使うYオペレータとかの事。 継続の説明(前置き) 継続の使用法 Schemeでの継続の使用。 SchemeとActor理論 CPS(Continuation Passing Style)について 「SchemeとActor理論」と同じ内容なので、 どうするか考え中。 CPSで多値(とか) values、call-with-valuesがあるから、 無理してS

  • 不動点オペレータについて

    不動点オペレータY 階乗関数は、 (define fact (lambda (n) (if (= n 0) 1 (* n (fact (- n 1)))))) のように、再帰的に定義できる。 再帰的定義を行なう場合はdefineやletrecを使うけど、 代わりにletを使うと再帰的定義はできない。 defineやletrecをどうしても使いたくないなら、多少工夫がいる。 例えば、factの引数を増やすという方法がある。 (let ((fact (lambda (self n) (if (= n 0) 1 (* n (self self (- n 1))))))) (fact fact 10)) ⇒ 3628800 (中略) 不動点オペレータYを使うと次のように書ける。 (let* ((Y (lambda (g) ((lambda (s) (g (lambda (x) ((s s) x))

  • Yコンビネータを読み解こう - ボクノス

    Y コンビネータって何? - IT戦記で話題になってるYコンビネータがイマイチわからない。 良記事発見したので、Y CombinatorのYコンビネータを読み解いて行きたいと思います。英語版も必見デス。 相当長いです。 Yコンビネータとはナニモノ!? そういや、再帰って、名前が無いと再帰出来ないのかなぁ・・・全ての式がλで書けるなら、再帰関数もλで書けるはずだ。名前イラナイ!!という時、困っちゃうのが再帰関数の定義。僕の少ない頭では定義出来ませんでした。 「再帰をλで書きたい」 と、思ったときに登場するのが「Yコンビネータ」らしい。追っていく。 階乗ってなんだっけ まずは復習。とりあえず階乗を書きます。 (define (fact n) (if (zero? n) 1 (* n (fact (- n 1))))) (fact 10) ; 3628800 式をを分解すると、 (* 10 (*

    Yコンビネータを読み解こう - ボクノス
  • lambda式

    lambda(ラムダ)式は,(名前のない)関数を記述するものである. たとえば,ある数に1を加える関数は,lambda式を使って, (lambda (x) (+ x 1)) と定義できる.lambda式を演算子として引数を与えれば > ((lambda (x) (+ x 1)) 0) 1 のように,関数の値を計算できる. これは,通常の関数の呼出しと全く同様である. また(名前をもった)新しい関数の定義は,通常defineを用いて, > (define (succ x) (+ x 1)) などとするが,実はこれは > (define succ (lambda (x) (+ x 1))) のように,lambda式によって記述される関数にdefineで名前を定義することの便 宜上の省略形式である.なお,一般にこのような便宜的な記法のことをsyntax sugar(文法上の砂糖)という. la

  • S式とconsセル

  • 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

  • WebScheme - Scheme interpreter for web applications

    WebScheme Scheme interpreter for web applications WebSchemeはJavaScriptで書かれた、ウェブアプリケーションのためのScheme処理系です。 デモ IE6.0およびFirefox 1.5にて動作確認しています。 数独 数独というパズルゲームを遊ぶプログラムです。 「load sample」をクリックするとプログラムをロードし、「eval」を押すと実行します。 数独(コンパイル済み版) Schemeのコードを事前にJavaScriptにコンパイルしておくことで、ロード時間を無くしたものです。 WebSchemeからGoogle Maps APIを呼び出すサンプル WebSchemeにはJavaScriptのオブジェクトを操作する機能があり、これを使って Googleマップを操作するサンプルです。 「load sample」

  • zick

    zickです。某社でソフトウェアエンジニアとして働いています。 大学に入ってLispというものを知り、しばらく触ってるうちに、何を勘違いしたのか 「インタプリタがかけそうな気がしてきた」と思い込み、CでLispインタプリタを書きました。 書いている途中で、関数と変数が同じネームスペースであるSchemeの方がカッコイイと感じ、Schemeインタプリタに変更。 半年ほどして、ごみ集め、真の末尾再帰、一級継続の付いたそれっぽいものが完成しました。 そこから調子に乗って、SchemeライクなLispインタプリタ(*)をJavaScriptで書いてみたり、Windows用のゲーム記述言語であるNScripterで書いてみたりしました。 問題は、インタプリタばっかし作っていて、Scheme自体の勉強をあまりしてないこと...... だったのですが、いつの間にかLisp/Schemeを日常的に使ったり

    zick
  • ちょっと変わったLisp入門

    Lispでは、英数字、記号の列はシンボルと呼ばれます。シンボルは変数名、関数名になりますが、Lispでは名前そのものもデータとして扱えます。また、同じつづりのシンボルは完全に同じものを表します。 ・リスト、S式

    ちょっと変わったLisp入門
  • 杉浦とソフトウェア開発

    杉浦とソフトウェア開発 ダウンローダをお使いの皆様へ そういえば、秀和システム様より、筆者の「対戦型五目並べ」が、デザパタ入門書として「あなたのコードを[賢く]するデザインパターン Java プログラミング」というタイトルで出版されることになった。7月中旬に店頭に並ぶ予定である。定価は2800円と決まった。著者のクセにシレっと言ってしまうが、内容比だと相当にお買い得だな。ぜひぜひ買ってくれたまえ。より詳しくは→「あなたのコードを[賢く]するデザインパターン Java プログラミング」 私は古手のプログラマである。学生時代から、プログラマ以外のバイトをしたことがない。今まで書いたことのある言語というと、Basic, C, Fortran, Cobol, Scheme, C++, Java, Intel Assembler, Perl, Tcl/Tk, PostScript あたりか。あ、ほと

  • DrScheme@レビュー | inolabo別館

    一定期間更新がないため広告を表示しています

    DrScheme@レビュー | inolabo別館
  • Scheme プログラミング人門

    back (技術評論社 Software Design誌 2000年 7月号 に掲載された、「Scheme への招待 〜 GNU標準のスクリプト言語入門」の 記事を加筆修正したものです *1) はじめに みなさんは Lisp をご存じでしょうか。Lisp は 1950年代後半*2に John McCarthy によって 開発されたプログラミング言語で、 おもに記号処理などの分野で今も利用されています。 Scheme は Lisp から派生した言語のひとつで、 Guy Lewis Steele Jr. および Gerald Jay Sussman によって 1975年に開発されました。Scheme はよく 「Lisp の方言」などと呼ばれますが、Lisp よりも簡単な仕様 で、それでいて複雑なプログラミングが可能なように設計されています。 どのプログラミング言語にも長所と短所がありますが、S

  • もうひとつの Scheme 入門

    勾配の緩やかな初心者向け Scheme 入門ページです。 コンピュータは使ったことがあるが、プログラミング経験があまりない人を想定しています。 Scheme の解説はすでに山ほど優れたものがありますが、あえて解説記事を書いてみました。 Scheme のような抽象的な話題は波長が合えばすんなりと理解できますが、あわないと全く理解できません。 他の解説を読んで今ひとつよく理解できなかった人は試しに読んでみてください。 この記事の目標はコンピュータ科学の教科書の決定版である SICP を読める程度の Scheme の知識を提供することです。 目次: 処理系のインストール Scheme を電卓代わりに使う リストを作ろう 関数を定義しよう 分岐 局所変数 繰り返し 高階関数 入出力 代入 文字、文字列 シンボル型 連想リスト、ハッシュ表 ベクトルと構造体 構文の定義 (マクロ) 継続 遅延評価 非

  • Emacs Lisp - Wikipedia

    Emacs Lispは、GNU EmacsとXEmacsテキストエディタ(この記事ではあわせてEmacsと呼ぶ)で使われているプログラミング言語LISPの方言である。Emacs組込みの編集機能のうち、C言語で書かれた部分以外のほとんどを実装するのに使われている。また、利用者によるEmacsのカスタム化や拡張のために用いられる。 Emacs Lispはスクリプト言語として使うこともでき、コマンド行や実行ファイルからも呼び出せる。バッファや移動コマンドのような編集機能はバッチ・モードで動作する。 Emacs Lispは、ときに「ELisp」や「Elisp」と書かれたり呼ばれたりすることもある (両表記ともGNU Emacs Lispリファレンス・マニュアル[1]に見える)。機能でいうと、Common Lispの影響も後にみえるが、Maclisp方言と強い関係がある [2]。プログラミング・メソ

  • GNU Emacs Lisp リファレンスマニュアル

    このinfoファイルは、GNU Emacs Lispマニュアル 2.9版であり、 GNU Emacs 21.3版に対応します。 旧版の翻訳である elisp-manual-20-2.5-jp.tgz を参考に最新版の変更点を追加しています。元文書の翻訳をされた方々に深く 感謝いたします。 また、「コメント」と書いてある部分は私が追加した部分です。また、分かり にく部分などは原文の意味を曲げない範囲で、加筆を行っています。 分かりにくい、意味不明だ、用語が統一されていないなどありましたら、 にて連 絡をお願いいたします。あるいは、各章の右上にあるコメントからWikiに書き 込みをお願いします。 またこの文書は原文のライセンスを継承しますので、再配布、コピー、変更な どはすべて自由にしていただいて構いません。