タグ

lispに関するNyohoのブックマーク (27)

  • コンピューティング史見聞録(12)ジョン・マッカーシーの発想と発明 – 京都テキストラボ情報&教育サイト

    前回に引き続き、人工知能の父の一人であるジョン・マッカーシーについて触れていこう。 マッカーシーは1950年代半ばに人工知能(Artificial Intelligence)という用語を考案し、「ダートマス会議」の中心人物として分野の発展に多く貢献した。 この時代以前にもサイバネティクスという言葉に代表される同様の分野の研究は行われていたのだが、マッカーシーは30歳前にしてここに新たな潮流をもたらす核となったわけである。 ジョン・マッカーシー ■マッカーシーとLisp マッカーシーは、コンピューティングの歴史に残る「知的な発明」を多く生み出した。彼が学生だった頃はコンピューターを専門の研究分野としていた人はもちろんいなかったわけだが、数学や科学の他分野で訓練を積んだ研究者たちが、培った知見や研究態度をコンピューティングの分野で発揮することによって、異なる考え方を含んだ豊かな土壌が生まれるこ

    Nyoho
    Nyoho 2024/02/01
  • Smalltalk-72で遊ぶOOPの原点:宇宙船「spaceship」の仮実装と複数インスタンスの動作確認 - Smalltalkのtは小文字です

    アラン・ケイの“メッセージングによるプログラミング”という着想に基づき(非同期処理などいろいろ足りていないながらも──)比較的忠実に実装された1970年代の非常に古いSmalltalk-72に実際に触れてみるシリーズ 第2弾です(なお最新のSmalltalkについては Pharo などでお楽しみください!)。 今回は謎言語「Smalltalk-71」で書かれたスペースウォー・ゲームを Smalltalk-72に移植して動かすことを目指します。前回(2019年)を含む他の記事はこちらから→Smalltalk-72で遊ぶOOPの原点 | Advent Calendar 2023 - Qiita 描いて移動するだけの spaceship 複数の宇宙船のキーボードからの同時操作を早く試さないといけないので、まず移動 moveship と描画 display ship のみに限定した spacesh

    Smalltalk-72で遊ぶOOPの原点:宇宙船「spaceship」の仮実装と複数インスタンスの動作確認 - Smalltalkのtは小文字です
    Nyoho
    Nyoho 2023/12/21
  • PLDI 2021: Evolution of Emacs Lisp

  • https://dl.acm.org/doi/abs/10.1145/3386324

  • consult.el の非同期コマンドの仕組み - ワタタツの日記!(2022-12-09)

    ☆ consult.el の非同期コマンドの仕組み このエントリはEmacsのAdvent Calendar 2022の9日目用です。 以前の記事「はてなブックマーク用のconsultコマンドを作っている」で書いた consult-hatena-bookmark を改良するにあたり、今年夏から秋にかけて、(自分としては)かなり consult.el のコードを読みました。 そのコードリーディングの中で、consult.el が非同期な候補の読み込みをどうやっているのか、だいぶわかったのでご紹介します。 公式で非同期で読んでいる consult コマンドのまねをしたい 公式で用意されている consult コマンドの中で、候補を非同期で読んでいるタイプのものは次などがあります。 consult-grep consult-ripgrep consult-man consult-find コマン

    consult.el の非同期コマンドの仕組み - ワタタツの日記!(2022-12-09)
    Nyoho
    Nyoho 2023/01/02
    去年の夏から秋にかけて頑張ってEmacs lispをコードリーディングしてわかったconsult.elの非同期のことをアウトプットしました。
  • Rustで簡単なLispを書いてみた

    初めに 先日Rustの勉強で、jpmens/joをRustに移植してみたんですが、 ちょっと課題がシンプル過ぎたので、Lisp処理系を書いてみました。 記事は「こんなことをやったよ」くらいの内容で、実装について細かくは書いていないため、 それでも興味ある方は読んでもらえたら嬉しいです。 rispについて 四則演算、変数、関数しか動かない簡単なインタプリタです。 実装 Lisp自体がよくわかっていないので、お気楽 Common Lisp プログラミング入門を読みつつ雰囲気を掴んでいまた。 Lispのリスト構造は(関数 引数...)という感じなので、stack/pop すれば動くかなと思って、最初はこんな感じに雑に実装していました。 初期実装 fn eval(&mut self, chars: &mut Peekable<Chars>) -> String { loop { let ch =

    Rustで簡単なLispを書いてみた
  • REPL駆動プログラミングについて

    記事は、Mikel Evins氏のOn repl-driven programmingの翻訳を、人の御了承を得て公開するものです。なお、関連記事であるProgramming as teachingの翻訳も公開していますので、どうぞご覧ください。 REPL駆動プログラミングについて 2020-12-18 by Mikel Evins その昔、「entha_saava」というハンドルネームの人が、Hacker Newsにこんな質問を投稿していました。 誰か詳しい方に LispのREPL と PythonRubyのREPLがどう違うのかを説明してもらえないでしょうか? LispのREPL駆動開発の差別化ポイントは何ですか? その答えは、プログラムを実行しながら対話することでプログラムを構築する特有のプログラミング手法があり、そのような手法をサポートするために一から設計された言語やランタイム

    REPL駆動プログラミングについて
    Nyoho
    Nyoho 2022/08/30
  • Risp (in (Rust) (Lisp))

    Many years ago, Peter Norvig wrote a beautiful article about creating a lisp interpreter in Python. It’s the most fun tutorial I’ve seen, not just because it teaches you about my favorite language family (Lisp), but because it cuts through to the essence of interpreters, is fun to follow and quick to finish. Recently, I had some time and wanted to learn Rust. It’s a beautiful systems language, and

    Risp (in (Rust) (Lisp))
  • つくって学ぶプログラミング言語 RubyによるScheme処理系の実装

    プログラミングをより深く理解するための近道は、プログラミング言語を実装してみること。SchemeのサブセットをRubyで実装していくことで、プログラムはどう実行されるのか、その基がはっきり分かります。 ※書はCC BYにより配布されています。上記の「買い物かごへ」ボタンからは有償で購入できます。無料で入手したい場合は、下記リンクよりダウンロードしてください。なお、有償版も無償版も内容は同一です。 EPUB版PDF版内容紹介プログラムは書けても、その基礎となっている計算機科学(コンピュータサイエンス) の理解があやふやな人を、著者は多く見てきました。プログラミングに自信があるという人が、もう一歩先に進める道を示したいというのが、この文書を書き始めた動機です。 この文書を読むことで次の効果が得られることを期待しています。 プログラミング言語とは何かを深く理解することで、プログラミングのレベ

    つくって学ぶプログラミング言語 RubyによるScheme処理系の実装
  • Emacs Lisp で実装する、9つのフィボナッチ関数 - Qiita

    概要 基的に Emacs Lisp (または、Lisp 自体)をあまり知らない方向けです。 Emacs Lisp でどんなコードが書けるのかを知って、興味を持ってもらえればと書きました。 さて、Lisp はマクロで構文を拡張出来る事が特徴ですが、もちろん Emacs Lisp も例外ではなく、フィボナッチ関数を色々な書き方で実装する事が出来ます。 今回は、それ以外にも、ジェネレータ版、遅延評価版、果てはスタックマシーンのコードを直接記述する方法まで、取り揃えました。 (それぞれの関数は、簡単の為、引数に負の値が指定されない事を前提にしています。) 内訳は以下の通りです。 再帰呼び出し系 fib-tail-recursion fib-double-recursion ループ系 (マクロを展開すると結局は同じ様なコードになるけど、色々な書き方が出来る) fib-while fib-dotim

    Emacs Lisp で実装する、9つのフィボナッチ関数 - Qiita
  • Lispはなぜ覇権を握らなかったのでしょうか?

    回答 (9件中の1件目) 広く普及しているとは言い難いですが、今でも新しい製品に採用されることはあります。 数年前、私はあるiOSとAndroid向けのゲーム開発に携わっていました。中でもAIの出来が面白さに大きな影響を与える種類のものでした。 プログラマーの同僚が1人、Lispに大変に強い思い入れがあり、そのAIは同僚の作ったLispインタプリタで動作しています。構文解析が簡単で、ゲームデザイナーのあーしたい、こーしたいの要望にもインタプリタの拡張で対応できる柔軟さがありました。 また別の同僚は、Lisp方言のClojureでゲーム開発の効率を高める特別なコンパイラを書いていまし...

    Lispはなぜ覇権を握らなかったのでしょうか?
  • GitHub - justinbarclay/parinfer-rust-mode: Simplifying how you write Lisp

    Nyoho
    Nyoho 2020/08/12
    おおこれはlisp書くのに超便利!
  • マシな作り方の作り方を作る | 麦 Baku

    ここ最近、Glispというアプリをつくっています。Lisp ベースのベクタードローイングツールで、Creative Coding と伝統的なチマチマやるデザインとの合わせ技っぽい使い勝手を目指してます。 ひとまずCuusheさんのビデオに手入れ続けて止まらないのが気が済んでからなのですが(ごめんなさい…)、終わったら格的にこれに注力してみたいなと思っとります。だから助成金やファウンディング含めてみなさんに色々ご相談したいです。 #glisp – Twitter Search / Twitter これが実現したらようやく「こいつなんか意味分からん事言って Adobe に因縁つけてるな」みたいなんがもう少し多くの人に理解してもらえる気がしています。少なくともベクターグラフィックに関しては、ソフトの使い勝手に気が散ってツール開発をしないとしんどくなる体質が改善して実制作に集中出来るようになれま

    マシな作り方の作り方を作る | 麦 Baku
    Nyoho
    Nyoho 2020/06/28
    コード側だけじゃなくてGUI側も動かしてコードが同期するのがSwiftUIっぽくて(・∀・)イイ!!
  • Lispのデータ構造

    Lispにおいて,基的なデータ構造はドット対 (dotted pair)である. ドット対はconsセルと呼ばれることもある. ドット対は,cons 関数によって作成される. (cons 1 2) (1 . 2) (cons 1 2) により,数値1と数値2のドット対が作成されている. ドット対は (1 . 2) のように表示され, 左側は car 要素,右側は cdr 要素と呼ばれる. ドット対を以下のように図示することにする. 丸はアトム(数値や記号)を表し,箱がドット対を表している. 箱の左側がドット対の左側の要素 (carの部分), 右側が右側の要素 (cdrの部分)に対応する. (cons (cons 1 2) (cons 3 4)) で作成される データ構造 ((1 . 2) . (3 . 4)) を図示すると以下のようになる.

    Nyoho
    Nyoho 2019/11/26
    ドット対
  • cl-vs-haskell.7

    Nyoho
    Nyoho 2018/10/08
    本稿は「すごいH本」の内容をCommon Lispに翻訳しながらCLerがHaskellを学ぶその第7章である
  • 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
    Nyoho
    Nyoho 2018/04/04
    内包的記法だけでいけるのか
  • Common Lispでゼロから作るディープラーニング (1)行列演算とニューラルネットのフォワード計算 - Qiita

    Common Lispは非常に単純でありながら簡単に拡張可能な構文を持つ高水準言語です。Lispは昔からAIプログラミングに活用されてきましたが、最近では記号処理ベースのAIから機械学習ベースのAIへと世の中の関心が移っており、Pythonなどが主に用いられるようになっています。 とはいえ、Common Lispは機械学習のような科学計算にも向いています(Common Lispが機械学習に向いていると考えるこれだけの理由)。 Common Lispの科学計算に適した特徴としては、例えば以下のようなものが挙げられるでしょう。 最適化されたネイティブコードを吐き出す優秀なコンパイラがOSSにも商用にも存在する 高水準言語でありながら低レベルな世界に降りていって最適化することもできるので、開発効率と実行効率のバランスを取りやすい Cライブラリを簡単に利用できるインターフェースがある この連載では

    Common Lispでゼロから作るディープラーニング (1)行列演算とニューラルネットのフォワード計算 - Qiita
  • 極小Lispインタプリタ作成で学ぶパーサーコンビネータ with Swift - Qiita

    極小Lispインタプリタを作ろう! この記事では、非常に機能を絞ったLispインタプリタの作成を通じて、パーサーコンビネータや、それにまつわるテクニック、考え方などを紹介していきます。 今回作成するLispに登場するのは、四則演算関数と、数値型だけの非常にミニマムなものです。 例えば以下のようなソースになります。 これをインタプリタなどにわせると、(3 + 18) * 2 という計算を行い、42が返ってきます。 四則演算しかできないとても極小のものですが、作成の過程では様々なテクニックを交えつつ紹介してみたいと思います。 また、この記事では、"無限リストの作り方"で作成したListを多用しますので、随時参照して頂けると読みやすいかと思います。 そもそもLispってなんだよ? LispはList Processingに由来するプログラミング言語です。とても古い言語ですが、コンピュータの歴史

    極小Lispインタプリタ作成で学ぶパーサーコンビネータ with Swift - Qiita
  • Common Lispのお宅拝見: CMU Common Lisp篇 — #:g1

  • Common Lispで作る日報環境

    こんにちは、chibaです! このブログでは過去に日報を如何に書くかについて度々エントリーが書かれていますが、今回も日報生成の話です。 以前は当日こなしたタスクを眺めたりして振り返る感じでしたが、タスク管理と日報の作成で仕事を二重にしている感があったので、思い切って社内のイシュー管理システムのRedmineの情報から日報を生成することにしてみました。 準備 タスクデータ取得 日報を書くには、現在抱えている仕事と、当日こなした仕事の2つの情報が必要ですが、RedmineAPIだけでは、上手く取得できないようです。 ということでカスタムクエリを設定して、これを呼ぶことにしました。 送信 Yammerや社内メールに送信しますが、Yammerにはメール投稿用のアドレスがあるので、どちらもメールで投稿することにします。 コード 最近念願のLispWorksを購入したので無駄にGUIのインターフェイ

    Common Lispで作る日報環境
    Nyoho
    Nyoho 2015/10/13