タグ

lispに関するpipeheadのブックマーク (154)

  • Lispのアイデア | POSTD

    Lispと聞くと、冷蔵庫のような大きいサイズのコンピュータや、大文字のアルファベット文字列や括弧の並びといったような過去の時代のことが頭に浮かびます。そう、非常に多くの括弧。何故、オブジェクト指向プログラミングの作成者たちは、そんなにもLispの アイデア に魅了されるのでしょうか。そしてまた、アイデアとされるプログラミング言語というものは、どうやったら説明できるでしょうか。こうしたことを教えてくれなかったコンピュータ科学の教育を責めるべきでしょうか。 Lispは、John McCarthyが書いた Recursive Functions of Symbolic Expressions and Their Interpretation by Machines, Part I という論文によって、初めて世界に登場しました。その中で、McCarthyはプログラミングに新しい多くのアイデアを導入

    Lispのアイデア | POSTD
    pipehead
    pipehead 2017/02/10
    /* https://dev.to/ericnormand/the-idea-of-lisp の和訳 */ > Fortranは大きな成果でしたが、Lispは大きな思想だったと言えるでしょう。
  • CommonLisp でできるだけたくさんの方法で階乗計算を実装してみた - Qiita

    Lisp Advent Calender 2015の7日目の記事です。 書いたら夏休みの自由研究そのものになっておりました。レポートを評価する先生の気分でご覧ください。 (2016年1月14日:コメントいただいた単純ループについての誤記を訂正) 結論から 整頓した結果として 19種類 の方法を紹介します。 別々の定義として試したものは全体で 32種類あります。排除した条件については後述します。 テストを含むソースコードはGitHubの記事用公開リポジトリに置いてあります。 大前提 CommonLispが標準で持っている機能のみで実装する つまり, ライブラリを利用しないこと 10, 50, 100, 1000の階乗計算に対して t を返す関数を定義すること 関数名は実装に応じて変えている factorial-dotimesなど。 それ以外の呼び出しを行った場合:原則考慮しない できる限りf

    CommonLisp でできるだけたくさんの方法で階乗計算を実装してみた - Qiita
  • 増補版:気軽に試してみよう!今こそ Lisp 入門 - Lisp の調べ

    1. 関数型プログラミングでもっと言いたかったこと (1) λ計算 λ計算は関数型プログラミングでは基中の「キ」ですが、文は初心者向けということでカットしていますが、ここでは少し説明します。 λ計算(λ-calculus)はα変換とβ-簡約、η-変換の規則があります。 α-変換は束縛変数の名前を変える変換で、β-変換(簡約)は関数適用です。 η-変換はすべての引数で同じ値を返す関数は等価である(関数の外延性)とするものです。 α-変換の例はλx.fx → λy.fy であり、β-変換の例は(λx.fx)3 → f3であり、η-変換の例は λx.fx → f(但しxはfで自由でないとき)です。 Lisp 風に書くのであれば、(lambda (x) (f x))→(lambda (y) (f y))、((lambda (x) (f x)) 3)→(f 3)、(lambda (x) (f x

  • Lisperはプログラムに何を見るか - 八発白中

    男子校に通う中学生の僕らにとって「家庭科」の授業は休憩時間のようなものだった。 僕の中学校には家庭科室というものがない。だから、いつもの教室で野菜の種類やそれに含まれる栄養素なんかを教わるというだけの、正直退屈な授業だった。話される内容はどれもただ暗記すればいいものなので、授業を聴かなくても定期試験前に教科書を読み通すだけで九〇点は取れる教科だった。 学校としても文科省の教育課程に沿うがためだけに時間割にねじ込んでいるに過ぎなかったと思う。特別教室がないことでも真面目にこの教科を取り扱う気がないことがわかるし、生徒の方でもその学校の態度を敏感に感じとっていた。 そんなやる気のない男子学生の前に立って話すのは教師にとって楽しいものではなかっただろう。僕らの先生は、落ち着いた雰囲気でどこかしたたかさのある、髪の長い女の先生だった。 その日も彼女はいつも通り、キノコに含まれる何々という栄養素が、

    Lisperはプログラムに何を見るか - 八発白中
    pipehead
    pipehead 2015/06/30
    > Lisp is a #1=(programmable . #1#) programming language.
  • なぜLispなのか?― “データ” と “コード” | POSTD

    たくさんの人から 私が昨日Hacker Newsに書いたコメント についてもっと詳しく説明してほしいというメッセージをいただきました。例えば以下のような質問です。 Lispは単なる表記法の1つにすぎないと私は考えますが、間違っているでしょうか? Lispのコードをデータ構造にマッチさせるのがなぜそんなに重要なことなのか理解できません。(おそらく、そのマッチさせるという行為がなぜLispを使うのかという答えになるのだとは思いますが。)私はマクロの大事な何かを見落としているでしょうか?  何か私が気付いていないことがあるでしょうか? この質問に答えるには少し長くなりそうだったので、ブログに投稿することにしました。以下が私の答えです。 手短に言えば、Lispは 単なる 表記法の1つではなく、プログラミングとは 何か という考え方を根的に覆すものなのです。プログラミングに関する主流な考え方は、「

    なぜLispなのか?― “データ” と “コード” | POSTD
  • PAIPメモ 3 - レガシーコード生産ガイド

    2015 - 05 - 19 PAIPメモ 3 CommonLisp PAIP(実用 Common Lisp )を読んでて気になって調べた事などをメモします。 今回はch3.13「 デバッグ ツール 」から。 step SBCL と、 SBCL をSLIMEから使ったところ上手くステップ実行できませんでしたが、 CLISP だとPAIPで説明されているようなステップで実行できました。 処理系で結構違いがあるみたいです。 追記: デバッガからステップ実行できるそうです。( id:nfunato さんのコメント参照) inspect Smalltalk やFactorの影響でinspectorが好きになったので、CommonLispにもある (というより Smalltalk とInterlispが発祥なのでしょうか?)のは嬉しいですね。 SBCL のinspectを試してみます。 q で終了し

    PAIPメモ 3 - レガシーコード生産ガイド
    pipehead
    pipehead 2015/05/19
    step, inspect, documentation, check-type, assert
  • Common Lispで文字列をリストにしたい、リストを文字列にしたい、というときにconcatenate - Qiita

  • lambda フォームの使いどころ - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    lambda フォームの使いどころ - Qiita
    pipehead
    pipehead 2015/03/12
    > lambda form とは、フォームの先頭が、通常のように関数名ではなく (lambda (...)...) であるようなフォームのことです。
  • マイナーな? rem を推してみる。 - なんだこれは

    Common Lispの剰余計算は二種類ある。 mod と remだ。common lispで剰余というと、多くは mod があげられる。マイナーな remがかわいそうです。 計算結果を比べてみる。 HyperSpec の計算例を引用すると、 引数の符号が異なる場合に返り値が異なるが、両方符号が同じ場合は同じになる。 (rem -1 5) ;=> -1 (mod -1 5) ;=> 4 (mod 13 4) ;=> 1 (rem 13 4) ;=> 1 (mod -13 4) ;=> 3 (rem -13 4) ;=> -1 (mod 13 -4) ;=> -3 (rem 13 -4) ;=> 1 (mod -13 -4) ;=> -1 (rem -13 -4) ;=> -1 (mod 13.4 1) ;=> 0.4 (rem 13.4 1) ;=> 0.4 (mod -13.4 1) ;

    マイナーな? rem を推してみる。 - なんだこれは
    pipehead
    pipehead 2015/01/25
    > 引数の符号が異なる場合に返り値が異なるが、両方符号が同じ場合は同じになる。
  • Island Life - 入れ子のバッククオート

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

    Island Life - 入れ子のバッククオート
    pipehead
    pipehead 2015/01/23
    > ポイントは comma-quoteが互いにキャンセルするということ。後は右側から展開されてく。
  • Lispの悟りが分かっちゃう新春ポエム - Qiita

    こんにちは、悟っちゃったLisperです。 皆さんにLispの悟りとは何かを悟らせたいと悟ったので、今回はLispの悟りを解説したいと思います。 まず、Lispの悟りが良く口にされるようになったのは、エリック・レイモンド氏が無責任に適当なことを書いたからです。 ハッカーになろう (How To Become A Hacker) LISP は、それをモノにしたときのすばらしい悟り体験のために勉強しましょう。 この体験は、その後の人生でよりよいプログラマーとなる手助けとなるはずです。 たとえ、実際には LISP そのものをあまり使わなくても。 彼の言う悟りが結局なんのことなのかは不明ですが、悟りですので、理解できなくても良いのです。 ちなみに、今回述べることは、レイモンド氏の主張とも矛盾しないものです。 TL;TR Lispの悟りを感覚として理解するのは非常に簡単です。 貴方は、データ処理を頼

    Lispの悟りが分かっちゃう新春ポエム - Qiita
    pipehead
    pipehead 2015/01/08
    > ちなみに、LISPのリストが即ちASTという風にはマッカーシ先生も考えてはいません。Lispにおいては、実質ASTのようなもの位の解釈のようです。
  • lisp-mode で保存したら *buffer-package* を設定する - 日々ごちゃごちゃと考える

    ファイルの先頭付近にあるアレ ;;; -*- mode: lisp; package: editor -*- を見て、*buffer-package* を設定するやつ。*buffer-package* をちゃんとしておかないと ac-mode が上手く補完してくれないとかインデントがおかしいとか色々調子悪いんで。 ;;;; Set *buffer-package* on save-buffer (defun lisp-detect-buffer-package () (cdr (assoc "package" (ed::find-file-scan-params) :test #'string-equal)) ;; FIXME: (in-package :PACKAGE) ) (defun lisp-set-buffer-package () (when (member buffer-mo

    lisp-mode で保存したら *buffer-package* を設定する - 日々ごちゃごちゃと考える
  • Common Lispのお宅拝見: CMU Common Lisp篇 — #:g1

    pipehead
    pipehead 2014/08/07
    > 「LISPは泥団子」という比喩についての話です。Joel Moses氏の名言ということになっていますが、オリジナルは、mudball(もしくはmud)ではなくbean bagだった様子。
  • tagbodyの中のマクロが展開されてシンボルになっても、タグにはならない。 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    tagbodyの中のマクロが展開されてシンボルになっても、タグにはならない。 - Qiita
  • 誰向けかわからないCommon Lispでの関数型プログラミング入門とその未来 - 八発白中

    Lispと言えば関数型言語という印象を持つ人が多いようです。 まあ正直に言うと、Common Lispに関して言えば違うんですけどね。Common Lispは効率のためと言えばループも代入も使いまくるし、構造体もクラスもある。実際書かれたコードも関数型プログラミングとは程遠いことも多くて、たとえば僕が作ったClackのコードを見ればオブジェクト指向言語だって言っても信じると思います。 僕自身、繰り返しをわざわざ再帰で書くよりもloop使うことが多いです。最近loopに頼りすぎてて良くないなーと思うことが多く、Common Lispでも性能が重要でないところは関数型っぽく書く癖をつけないとなー、と思っていろいろ考えています。なんでもloopだと可読性が悪い。 特に、僕が今作っているCommon Lisp方言の「CL21」では関数プログラミングをもっとしやすくする機能を入れたいと思っています。

    誰向けかわからないCommon Lispでの関数型プログラミング入門とその未来 - 八発白中
    pipehead
    pipehead 2014/02/04
    無名関数 (lambda), 高階関数 (mapcar, reduce), 関数合成 (compose, conjoin, disjoin)
  • '`'と',' - Qiita

    lisp advent calendar 四日目の記事らしいです。 他のカレンダー参加者のレベルが高すぎて困りました。 以下について、利用の方言はCommon Lispです。 処理系は多分cltl1以降に準拠なら大丈夫だと思います。 Common Lispの難読記号 普段lispを書いているとlispは使う記号の種類が他の言語よりも少なくルールも少なく、演算子の結合則とか、使わなければいけない括弧のバリエーションも少なくて、なんてとっつきの良い言語なのだろうかと思っています。 意味不明な'$'とかどう結合するのか良くわからない'.'とかセパレータとしてはスペースがあれば事足りるはずなのに一々書かなくてはならない','とかと縁なくて良かったなーなどと思って日々の生活はしているのですが、マクロを書く時の簡易の為の'`'と','が、マクロを書く時に考える事の特殊性とあいまって、他所からみて慣れな

    '`'と',' - Qiita
  • シンボルとパッケージを学んだ - kiyo_hikoのブログ

    パッケージ名はCCL環境による。メモる 記号 システムはケースの大小を無視 nilなら8パターンあるが、1パターンを印字名として覚えてる。 (symbol-name nil) パイプを使うと記号に特殊文字や小文字を持たせられる。 (defun |(test)| (x) (* x x)) ;;-> |(test)| (|(test)| 100) ;;->10000 または一文字ならバックスラッシュを使う。 パッケージ in-packageはカレントパッケージ切り替え make-packageで作るっぽい 外部シンボルはexportで作る。[:」で参照可能で、外から使ってもいいという意思表示? 内部記号は「::」で見れてしまう。使うなという意思表示? ;; カレントパッケージ (setf *package* (find-package 'common-lisp-user)) ;; パッケージ作

    シンボルとパッケージを学んだ - kiyo_hikoのブログ
    pipehead
    pipehead 2013/06/10
    shadow
  • 対話によるCommon Lisp入門 29 末尾再帰 - by shigemk2

    (defun gcd$ (m n) (if (= (mod m n) 0) n (gcd$ n (mod m n)))) [1]> (load "gcd.l") ;; Loading file gcd.l ... ;; Loaded file gcd.l T [2]> (gcd$ 300 45) 15 [3]> (trace gcd$) ;; Tracing function GCD$. (GCD$) [4]> (gcd$ 300 45) 1. Trace: (GCD$ '300 '45) 2. Trace: (GCD$ '45 '30) 3. Trace: (GCD$ '30 '15) 3. Trace: GCD$ ==> 15 2. Trace: GCD$ ==> 15 1. Trace: GCD$ ==> 15 15 [5]> (gcd$ 30 18) 1. Trace: (GCD$

    対話によるCommon Lisp入門 29 末尾再帰 - by shigemk2
    pipehead
    pipehead 2013/04/09
    > 値を返す直前の関数呼び出しのことを末尾呼び出しといい、再帰呼び出しから返されてきた値をそのまま自分の答えとして返すような再帰の方法を末尾再帰という。
  • 対話によるCommon Lisp入門 20 最後の要素を取り出す方法3つ - by shigemk2

    リストの最後の要素を取り出す方法は3つある。 lengthを使う方法。 reverseを使う方法。 そしてlastを使う方法。 [8]> (setf x `(a b c d)) (A B C D) [9]> (elt x (- (length x) 1)) D [10]> (first (reverse x)) D [11]> (last x) (D)

    対話によるCommon Lisp入門 20 最後の要素を取り出す方法3つ - by shigemk2
    pipehead
    pipehead 2013/04/04
    length, reverse, last
  • 対話によるCommon Lisp入門 10 コンス - by shigemk2

    空リスト以外のリストをコンスという。 コンス以外の全てのデータはアトムである。 なお、空リストはNILでもある。 nilはアトムであり、同時にリストであることにもなる。

    対話によるCommon Lisp入門 10 コンス - by shigemk2
    pipehead
    pipehead 2013/03/28
    > 空リスト以外のリストをコンスという。コンス以外の全てのデータはアトムである。なお、空リストはNILでもある。nilはアトムであり、同時にリストであることにもなる。