タグ

progとlispに関するNeanのブックマーク (32)

  • Homoiconicity - Wikipedia

    In computer programming, homoiconicity (from the Greek words homo- meaning "the same" and icon meaning "representation") is an informal property of some programming languages. A language is homoiconic if a program written in it can be manipulated as data using the language.[1] The program's internal representation can thus be inferred just by reading the program itself. This property is often summ

    Nean
    Nean 2018/12/26
    日本語版に項目なし?
  • Lispの車窓から見た人工知能 - dely engineering blog

    はじめに こんにちは。 機械学習エンジニアの辻です。 記事はdely Advent Calendar 2018の22日目の記事です。 dely Advent Calendar 2018 - Adventar dely Advent Calendar 2018 - Qiita 昨日は弊社のサーバサイド・エンジニアの山野井が「【Vue.js】算出プロパティの仕組みについて調べてみた」という記事を書きました! とてもわかり易く解説しているので興味のある方は是非読んでみてください。 tech.dely.jp さて日は「Lispの車窓から見た人工知能」と題しまして、プログラミング言語Lispから見た人工知能の風景を眺めていきたいと思っています。ぼくはEmacs使いのLisperですが、Lispを書くのは自分用のスクリプトや、Emacs Lispの設定変更といったものだけで、ふだんの機械学習に関す

    Lispの車窓から見た人工知能 - dely engineering blog
    Nean
    Nean 2018/12/24
  • Reddit - Dive into anything

    私家版、Common Lisp プログラマのレベル10ってないな、と思って10年遅れで作ってみました。 参照(改変元) Scheme:Schemeプログラマのレベル10 くれぐれも気にしないように。 レベル0 Clojureが良さそうなので入門書を漁っていたところ、Common Lispの入門書に出会う。Lispなら同じだろう。 Emacs Lispもその親戚らしいけどコードを見ただけでくらくらする。 便利なマクロは自分の.emacsにコピペしているがなぜか動かない。 レベル1 Common Lispに関するwebサイトを見たり、ウェブ上の入門ページを眺めて、 factorialとかappendとかreverseとかを書いたり、 ネストした木構造のノードの数を数えたりできる。 でもそれが何の役に立つかわからない。Common LispとClojureは別物なのではないかと思い始める。 カ

    Reddit - Dive into anything
  • sedlisp.sed 00:54 - 2014-06-08 - 兼雑記

    https://github.com/shinh/sedlisp Lisp インタプリタを書きました。 sed で。 https://github.com/shinh/sedlisp/blob/master/sedlisp.sed README に書いた通り、それなりにややこしいプログラムも動く気がします。具体的には eval.l として、 eval の無いところで eval を実装しました。で、その上で FizzBuzz なんかが動きます。これはつまり S 式のパースは省略した Lisp のインタプリタと言って良いので、 sed で書かれた Lisp の上で Lisp が動いて、その上で FizzBuzz が動いてることになります。ちなみにもう一段かますことはできませんでした。 Ruby で書いた実装でも動かないので、 eval.l がとりあえず循環できない作りになってしまってるみたいで

    sedlisp.sed 00:54 - 2014-06-08 - 兼雑記
    Nean
    Nean 2014/06/08
    sedでLisp。
  • はじめてのプログラミングはLISPから?【海外】 : oversea_oversee

    #formode なんのプログラミング言語を真剣に勉強しようか決めかねているんだけど...9月にJavaを学校で習って、PythonかCかLisp,もしくはこれ以外の言語かで悩んでいるんだ。LISPがいい選択なのかな? dive into;もぐりこむ、没頭する、 ja.reddit.com/r/lisp/comments/cqctz/is_lisp_a_good_language_to_learn_first/ ●LISPをはじめに触れてみることは、いわば素晴らしい子供時代を送るようなもんだ。ほかの言語は人生を無駄にするだけだな、他の言語を学んでも大抵難しくて悲しいだけだ。 incredibly:信じられないような、すごく sabotage:怠惰行為、妨害行為 ●賛成できない・・・・。 slow handclap:不満、退屈を示す意思表示 ●なんでそう思うの? ●CやPerlJavaとい

    はじめてのプログラミングはLISPから?【海外】 : oversea_oversee
    Nean
    Nean 2013/03/18
    なかなか。
  • プログラミング言語同士がどう影響を与え合っているのかを示した相関図

    世の中には数千種類のプログラミング言語がありますが、その多くは何らかのプログラミング言語から影響を受けてできており、また、自身も他のプログラミング言語に影響を与えています。その関係を1つのマップ上に落とし込んだ相関図が「Programming Languages Influence Network」です。 Programming Languages Influence Network | Exploring Data https://exploring-data.com/vis/programming-languages-influence-network/ まるで星のように見えている点がそれぞれ1つのプログラミング言語を表しています。たとえば「Lisp」にマウスオーバーすると、このように関連する言語までのラインが表示されます。このうち、オレンジ色は「影響を受けた言語」、青色は「影響を与え

    プログラミング言語同士がどう影響を与え合っているのかを示した相関図
    Nean
    Nean 2012/09/29
    Lispエラい。
  • Difficulties of elisp — The Cliffs of Inanity

    The thesis that underlies my project to translate the Emacs C code to Common Lisp is that Emacs Lisp is close enough to Common Lisp that the parts of the Emacs C code that implement Lisp can be dropped in favor of the generally superior CL implementation.  This is generally true, but there are a few difficult bits. Symbols The primary problem is the translation of symbols when used as variable ref

  • 小学生から使い始めるLisp

    [top] [set] [bbs] 小学生から使い始めるLispです.Lispはご存知ですか? ( )を多用する言語で算数や数学やアルゴリズムが書きやすい言語でゲームも作れます. このサイトでは小学生が学校で学んだ算数の計算をアルゴリズムにするとどうなるのかの勉強と アルゴリズムに興味を持って貰えるように構築してます。 自分でアルゴリズムを変更してみてよりいいものを構築したりできればプログラムの勉強になります.BBSで発表したものはここで紹介します.こちらの都合 でソースを改良することもあります. [設定方法と使い方] 例題を見て > の後に入力して[Enter]キーで実行されます. 掲示板 [初 心者] [初級者] [中級者] [上級者] [開発者] [BBSの書式 の説明] 何か作った場合は掲示板で公開してください。便利なものはここで使えるようにします。 プログラム

    Nean
    Nean 2011/05/22
  • JavaScriptでつくるSchemeインタプリタの基礎の基礎

    はじめに 現存するプログラミング言語の中で2番目に古いのがLispです。生まれは古くても、いまだに使われ続け、また、Rubyなどの新しい言語にも影響を与えています。そのLispの派生であり、シンプルさが売りなのがSchemeです。 ここではSchemeの簡単なインタプリタをJavaScriptで作ってみます。 対象読者 稿はLispやSchemeは少し触ったことはあるけど、インタプリタは書いたことがないという方を読者対象としています。また、JavaScriptの文法や、簡単なデータ構造についての知識を前提とし、説明は省きます。 必要な環境 テキストエディタと、JavaScriptが動くWebブラウザがあれば十分です。他に特に用意するものはありません。 概要 作成するインタプリタについて インタプリタのコードはJavaScriptで書き、HTMLのフォームを使って、Schemeのプログラム

    JavaScriptでつくるSchemeインタプリタの基礎の基礎
    Nean
    Nean 2011/02/08
    そのうち読む、かもしれない。
  • 非同期と継続と私 - 技術日記@kiwanami

    非同期のプログラミングの解説の中にはよく「継続(渡し)」が良く出てきます。継続といえば Scheme の call/cc ですが、やっぱり JSDeferred のサンプルのページにも出てきます。直感的にはあんまり関係ないような気がしますが、関係があるようです。 さらに、非同期と遅延評価の関係も気になります。非同期は「結果が後で来る」感じですが、遅延評価は「必要になるまで結果を計算しない」ということで、後回しにする感じが似ています。 今回、deferred.el を作った後にこれらについて考えてみたところ、なんとなく自分の中で実用的な結論に達したのでまとめてみました。以下、その過程とまとめです。 あらすじ 継続渡し(CPS)と非同期 CPS変換から非同期化 Deferredで非同期化 遅延評価と非同期 遅延関数のCPS変換から非同期化 Deferredで非同期化 明示的形式と暗黙的形式 継

    非同期と継続と私 - 技術日記@kiwanami
  • Lisp

    Randall Munroe

    Nean
    Nean 2010/10/23
  • Emacs Lisp が「書ける」ようになるまで - 技術日記@kiwanami

    先日の関西Emacsでは、Emacs Lisp の入門記事がうけるとか、「書ける」ようになる情報がないらしいという話を聞きました。確かに、Emacsの初歩的な操作入門と、良く書ける人がアプリやブログなどでelispをばしっと書いてるのはよく見ます。入門から書けるようになるまでの間の過程は見たこと無かったかもしれないと思いました。 ということで、Emacsの先人たちにはまだまだ及びませんが、いくつかのアプリを書いてみた自分がたどった方法を書いてみます。先にまとめると以下の2つになると思います。 elispでどうしても書きたい物があること たくさん書いて動かして(こっちが先)、そしてInfoや他人のコードを見て勉強する 書ける以前のまとめ Emacs歴10年以上。すでに生活の一部。 でも設定を書くのに使っていたぐらい。 既存のアプリの分かりやすいバグを手元でちょっと直すとか。 LISP系の言語

    Emacs Lisp が「書ける」ようになるまで - 技術日記@kiwanami
  • Lisp:S式の理由

    S式は人に優しいか Shiro: Lispの不人気の理由として筆頭に上げられるのが、括弧だらけの 独特の見た目。とっつきにくい、一般的な表記法と違っていてわかりにくい、 等々、様々なことが言われてきました。しかし、 S式を捨てたLispも開発されましたが 流行ったとはいい難く、Lispな人々はいまだに括弧に固執しているかのようです。 S式のメリットをLisperに尋ねれば、エディタがどうの、マクロがどうの、といった 回答が真っ先に返って来ると思うんですが、そういう理屈をいくら理解しても S式がダメな人がS式を好きになったりはしません。どうも、もっと根的な 感覚に大きな隔たりがあるような気がします。非Lisperから理解しがたい、 Lisperの持つ感覚とはどんなものなんでしょうか。Lisp脳から見た世界は どんなものなのでしょうか。 構文木を人間が書く? S式は言ってみれば言語の構文木そ

    Lisp:S式の理由
    Nean
    Nean 2010/03/07
  • 『「Lisp脳」の謎に迫る』の舞台裏

    ドット対(1 . 2)は対であるがリストではない 空リストは対ではないがリストである 空でないリストは対でありかつリストである この事実から「リストはまた対である」を以下の通りに修正する必要があります。 空リストは対ではない 空でないリストは対である なぜ「配列」でなく対で並びを表現するのか? SchemeをはじめとするLisp言語では、なぜ「配列」でなく対で並びを表現するのでしょうか? 対で並びを表現すれば、いくらでも入れ子構造にすることができる 入れ子構造になった対は再帰的に処理することができる あらゆるデータ構造を(入れ子構造になった)対で表現できる 入れ子構造になった対でプログラムコードも表現できる これまで見てきたように、対はcons手続きでいくらでも入れ子構造にすることができます。また、入れ子構造になった対にcar、cdrを適用すればどんな要素も取り出すことができます。これは、

  • プログラミング言語Nuの基本とインストール方法

    Nu is an interpreted object-oriented language. Its syntax comes from Lisp, but Nu is semantically closer to Ruby than Lisp. Nu is implemented in Objective-C and is designed to take full advantange of the Objective-C runtime and the many mature class libraries written in Objective-C. Nu code can fully interoperate with code written in Objective-C; messages can be sent to and from objects with no co

    プログラミング言語Nuの基本とインストール方法
  • Emacs Lisp プログラミング:

    This master menu first lists each chapter and index; then it lists every node in every chapter.

  • Yaneu Labs --- コンピュータ将棋プログラムをLISPで書く

    *[hatefu:labs.yaneu.com/20090905/] コンピュータ将棋プログラムをLISPで書く 「コンピュータ将棋プログラムをLISPで書く」と言うとコンピュータ将棋開発関係者にすら完全にネタかと思われているのが実状ではあるが、私はこれを機にその誤解を解いておきたい。 ここでは、私がC#で書いたLISPエンジンのソースを公開し、これが実際にコンピュータ将棋プログラムの開発において非常に有効であることを示す。 * YaneLisp version 1.10 今回の記事はあまりに長文なので最後まで読む前に眠くなる人のために、まず始めに私が実装したLISPのバイナリとソースを配布しておく。ライセンスはNYSLとする。 勢いに任せて実装したので、かなり雑な作りだが、必要ならばC#側で関数を追加するなりすればいいと思う。このLISPの製作に要した時間は丸2日ぐらい。 # YaneL

    Nean
    Nean 2009/09/05
  • Emacs Lisp の構造化 - あどけない話

    忌み嫌われているグローバル変数/関数をなるべく使用しないために、もう一つ小さな空間を用意している言語があります。僕のイメージでは、この空間はゆりかごです。ゆりかごの実現方法として、以下のようなものが挙げられるでしょう。 C++Java ならクラス JavaScript なら関数、あるいはオブジェクト・リテラル Scheme なら手続き(関数) Emacs Lisp も Lisp なんですから、ある関数をゆりかごにして、中に関数を定義したいところです。でも、これはできません。さて、どうするかという話です。 defun で defun defun の中で defun したいところですが、これはうまく行きません。外側の関数が実行されると、内側の関数がグローバル空間に定義されてしまうからです。 (defun foo (n) (defun bar (n) (1+ n)) (bar n)) (fbo

    Emacs Lisp の構造化 - あどけない話
  • Emacs Lisp でピュアな Lisp - あどけない話

    「基的な 7 つの関数を実装すれば、LISP は作れる」という話をよく聞きます。僕はこのことに疑問を持っていました。和田先生が、「"Lisp 1.5 Programmer's Manual" の EVAL の定義を読むとよく分る」とおっしゃったので、お借りして読みました。 このでは、EVAL が M 式で書かれており、すんなり頭に入ってきません。そこで、Emacs Lisp で実装してみました。 表記 関数の名前は、Emacs とぶつからないように、全部大文字にします。ただし、読みにくい表記は、読みやすい表記に変えることにしました。 QUOTE → ' (QUOTE T) → t (QUOTE F) → nil NIL → nil 7 つの基関数 さて、7 つの関数の定義です。 (defalias 'CAR 'car) (defalias 'CDR 'cdr) (defalias '

    Emacs Lisp でピュアな Lisp - あどけない話
  • Emacs Lisp のパターン - あどけない話

    デザイン(設計)パターンという程のことはない、Emacs Lisp のパターンを思いつくままに書きます。心は、 高階関数を書こう マクロを書こう です。 mapcar mapcar は、引数に関数をとる高階関数のよい例です。リストを取り、それぞれの値を加工して、新しいリストを返すパターンのときは、mapcar を使いましょう。 (mapcar '1+ '(1 2 3 4)) ;; => (2 3 4 5) mapcar には、自分のさせたい仕事を実装した関数を渡しましょう。 (defun f(x) (1+ (* x 2))) (mapcar 'f '(1 2 3 4)) ;; => (3 5 7 9) mapcar を連結しましょう。(オブジェクト指向でのメッセージの連結に似ていますね。) (mapcar '1+ (mapcar (lambda(x) (* x 2)) '(1 2 3 4)

    Emacs Lisp のパターン - あどけない話