タグ

Lispに関するl-_-llのブックマーク (13)

  • クロージャ再考 - Qiita

    はじめに 中級以上のJavaScriptプログラマを目指す上で、避けては通れない壁の一つは クロージャ(Closure) だと思います。「関数の外側で定義された変数を持つ関数の実行時オブジェクトです」とさらっと説明されることが多いですが、シンプルなだけに理解したつもりになって実は使いどころが分からないってことになりがちです。きちんと自分のものにするには基から丁寧に理解しないとダメですねってことで、今回はクロージャについてその背景から調べてみたいと思います。 歴史と語源 まずは歴史から振り返ってみたいと思います。Wikipediaによるクロージャの解説では、以下のような説明があります。 クロージャの概念は、1960年代にラムダ計算の機械的な実行モデルを構築するために生み出され、1970年に 静的スコープ と 第一級関数 をサポートするPALプログラミング言語で最初に実装された。1964年、

    クロージャ再考 - Qiita
    l-_-ll
    l-_-ll 2023/03/27
    "開いた関数が環境から自由変数の値を取り込むことで閉じた関数となるというところがクロージャを理解する上でのキーとなります。"
  • Emacs の起動時間を""詰める""

    Emacs はプラグインを増やしていくと起動に何秒もかかって重い、という話をみることがあります。 しかし、考えてみれば Emacs には 1000 以上の Emacs Lisp ファイルが初めから同梱されているわけで、そこに数十のプラグインを足しただけで爆裂に遅くなるのは、なにか設定にも問題がある気がします。 このでは、 Emacs の起動時間を徹底的に縮めるテクニックたちを紹介します。 設定内容自体の改善から、 Emacs の仕組みを利用したハック的な技術まで、これまでに試して効果のあった工夫を総括した内容になっています。

    Emacs の起動時間を""詰める""
  • R言語のどこにSchemeが入っているのか - 丸井綜研

    語版WikipediaでR言語のことを調べると、「影響を受けた言語」という部分にS言語とSchemeが書かれています*1。S言語から大きく影響を受けたことはもちろんのことですが、なぜSchemeなのかと常々思っていました。プログラムを見てもSchemeのようなLISP族よりもC言語などのAlgol族に似ています。 今日、関数の書き方についてを読んでいると、「R言語は基的に関数型言語である」という記述がありました。3+5という演算も、正式には "+"(3, 5) のように書くのだそうです。LISP族での (+ 3 5) と同様の前置記法だったのでした。シンタックス・シュガーとして中置記法が使えるようになっているとのこと。でも、それだけではAlgol系の add(3, 5) という関数呼び出しにそっくり、と言われてもしょうがないです。 遅延評価がなされるのもHaskellなどの関数型言

    R言語のどこにSchemeが入っているのか - 丸井綜研
    l-_-ll
    l-_-ll 2022/08/20
    RとSchemeの共通点や相違点
  • 計算機プログラムの構造と解釈 第二版

    [ 目次, 前節, 次節, 索引 ] 目次 目次 序文 第二版への前文 第一版への前文 謝辞 1  手続きによる抽象の構築 1.1    プログラムの要素 1.1.1 式 1.1.2 名前と環境 1.1.3 組合せの評価 1.1.4 合成手続き 1.1.5 手続き作用の置換えモデル 1.1.6 条件式と述語 1.1.7 例: Newton法による平方根 1.1.8 ブラックボックス抽象としての手続き 1.2    手続きとその生成するプロセス 1.2.1 線形再帰と反復 1.2.2 木構造再帰 1.2.3 増加の程度 1.2.4 べき乗 1.2.5 最大公約数 1.2.6 例: 素数性のテスト 1.3    高階手続きによる抽象 1.3.1 引数としての手続き 1.3.2 lambdaを使う手続きの構築 1.3.3 一般的方法としての手続き 1.3.4 値として返される手続き 2  データ

  • Common Lispが機械学習に向いていると考えるこれだけの理由 - masatoi’s blog

    Lisp Advent Calendar 2016参加記事 ここ数年ディープラーニングの出現をきっかけにAIが再び盛り上がっているので、いよいよLispの復権があるかと思いきや、ないので(泣)、多少なりともLispに興味を持ってもらえるように、LispとAIの関係について私見を述べておこうと思う。Lispといっても色々あるが、この記事では主にCommon Lispの話になる。 Lispというとどうしても過去の記号処理的AIと結びつけられてしまい、機械学習を駆使するような現代のAIでは役に立たないように思われがちなのだが、これは大体誤解である。少なくともCommon Lispは現代的なAI開発に適した特徴を備えている。まず、AI実装のためのプログラミング言語に必要とされる特徴は何なのかを明らかにするために、AI歴史から考えてみたい。 AI歴史 初期の記号処理的AI(以降は記号AIと呼ぶ)

    Common Lispが機械学習に向いていると考えるこれだけの理由 - masatoi’s blog
  • Pythonのリスト内包表記はチューリング完全だから純LISPだって実装できる - Qiita

    まえがき Pythonにはリストに対する操作をさっと書ける、リスト内包表記というものが存在します。こんなやつです: >>> [2*n for n in range(5)] [0, 2, 4, 6, 8] # 等価なfor文 >>> lis = [] >>> for n in range(5): ... lis.append(2*n) ... >>> lis [0, 2, 4, 6, 8] ところでこのリスト内包表記、チューリング完全だって知ってましたか? こちらの記事でそのことが示されています。 リスト内包表記の活用と悪用 by @KTakahiro1729 あああっ! 開かれるPythonワンライナー&難読化の世界!! ステキすぎる!!! 超カッコいい!!!! ……でも、われわれはbrainfxxkだけで満足していてよいのでしょうか。ぼくは、もっと抽象的で、カッコよくて、とっても使いやす

    Pythonのリスト内包表記はチューリング完全だから純LISPだって実装できる - Qiita
  • Lispのアイデア | POSTD

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

    Lispのアイデア | POSTD
  • マンガで分かるLisp(Manga Guide to Lisp)

    スポンジで虎を倒せるんだよ? (you can take down a tiger with a sponge, right?)

    l-_-ll
    l-_-ll 2016/09/17
  • Making Crash Bandicoot – GOOL – part 9

    This is part of a now lengthy series of posts on the making of Crash Bandicoot. Click here for the PREVIOUS or for the FIRST POST. I also have a newer post on LISP here. I’m always being asked for more information on the LISP based languages I designed for the Crash and Jak games. So to that effect, I’m posting here a journal article I wrote on the subject in 1996. This is about GOOL, the LISP lan

    Making Crash Bandicoot – GOOL – part 9
  • Lisp:よくある正解 - Lispについての正しい認識と、それでもLisperがLispを使う理由

    Lispについての正しい認識と、それでもLisperがLispを使う理由 yoriyukiさんのエントリがなかなか 真実を突いていたので、ネタにさせていただきます。 原因のほとんどは経路依存性とかネットワーク効果によるもので、Lisp自体の性質とは無関係だと思います。と言った上で、私が何となくLisp系言語を使わない理由としては、 Too dynamic: 実行時にコードが差し替えられることがすごい利点だ、と言っている人がいましたが、逆に言えば今どのコードが走っているか理解しにくい、という欠点にも繋がる。 Meta programming:S式のおかげでMeta Programmingがしやすいが、Meta Programmingを多用したプログラムは理解しにくい。 動的型付け:利点でもあるけど、特有のバグを引き起こす。 識別子に関数と値の2種類が別々にバインドできる。これは私には非常に美

    Lisp:よくある正解 - Lispについての正しい認識と、それでもLisperがLispを使う理由
    l-_-ll
    l-_-ll 2016/05/23
  • Lisp:よくある誤解

    Lispについてのよくある誤解と、その中にあるちょっとした真実 はてなの質問: プログラミング言語で最強(スケーラブル)なのは、 Lispだと思われます。 http://jp.franz.com/index.html しかし、 世間ではマイナー言語のようです。 なぜでしょうか。 についた回答のいくつかには、「Lispを少しだけかじった人がしがちな誤解」が 含まれてるようなので、それをネタに少し解説してみます。 ただ、誤解が生じるのは、やっぱりそれなりの理由があって、従ってその 誤解の中にも(条件つきの)真実が含まれていることがあります。 そのへんまでをも含めて考えてみましょう。以降、引用は回答からです。 Lispはスクリプト言語? 一昔前まで、これらのスクリプト系の言語は「とてつもなく遅い」のが嫌われる最大の要因でしたが、最近のコンピューターの性能向上でようやくRuby,Python,Li

    Lisp:よくある誤解
    l-_-ll
    l-_-ll 2016/05/18
    なので、C並に速いLispコードは見た目も安全性もC並になる、というのが 私 (Shiro) の経験です。
  • Island Life - 「Cで書くコードの方がCommon Lispで書くより速いって人がいたら、それは彼のCの技量が高すぎるってことだね。」

    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 - 「Cで書くコードの方がCommon Lispで書くより速いって人がいたら、それは彼のCの技量が高すぎるってことだね。」
  • Common Lisp と人工知能プログラミングの本を執筆中 : セマンティックウェブ・ダイアリー

    上巻を出版しました.興味のあるかたはこちらからお願いします.Common Lisp と人工知能プログラミングのを執筆中です.まだ Common Lisp の部分の半分ほどしかできていませんが,およそ以下のような内容になるはずです. ほぼ完了しつつあります.出版前講演として3回にわたって「Common Lisp と 人工知能プログラミング」の第1部 Common Lisp プログラミングについて講習会を行います. 何かコメントをいただければ,できるだけ反映いたします. 目次 第1部 序章 はじめに 第1章 Lispの基 1.1 リストを入力してみよう 1.2 書式を評価する 1.3 car と cdr はリストを分解する 1.4 シンボルは値を持つことができる 1.5 consはリストを合成する 1.6 便利なリスト処理関数 1.7 数,整数,浮動小数点数,有理数 第2章 関数定義および

    Common Lisp と人工知能プログラミングの本を執筆中 : セマンティックウェブ・ダイアリー
    l-_-ll
    l-_-ll 2015/04/26
  • 1