タグ

Lispに関するs_ryuukiのブックマーク (17)

  • ど素人のLISP入門 / SBCLで非同期ChatGPT呼び出しをしてみる|shi3z

    AIderを使うと対話的にプログラムを書くことができる。 やはり非同期処理をするためだけに自分で処理系を書くとか正気じゃないので既存のLISP処理系を使って同じことをできるようにしてみる。 色々すったもんだはあったが、とりあえずMacではSBCLを使うのが正しいらしいのでSBCLをセットアップする $ brew install sbclで、SBCLだけあってもパッケージが管理できないので、QuickLispというパッケージ管理ツールを読み込んで設定する。これがなんか原始的でわかりにくいが、これが伝統の味というやつなのだろうか。 $ wget https://beta.quicklisp.org/quicklisp.lisp $ sbcl This is SBCL 2.4.7, an implementation of ANSI Common Lisp. More information a

    ど素人のLISP入門 / SBCLで非同期ChatGPT呼び出しをしてみる|shi3z
  • AIと一緒に新しい言語処理系を作ってみた|shi3z

    Claude-3 Sonnetがだいぶ良いので、前々から考えていた、「Lispっぽい記法で書けるけど他の言語に慣れた人にも使える言語」の処理系を作ってみた。仮にEasyLispという名前にした。 この言語ではこんな感じでプログラムが書ける (define person (object)) (set! person.name "Alice") (set! person.age 30) (print person.name)personというオブジェクトのプロパティをnameやageがあって、これをドット記法で指定するとpersonオブジェクトのプロパティにアクセスできる。 同じことをCommon-Lispでやろうとするとこうなる (defun example () (let ((person (make-object :name "Alice" :age 30))) (format t "N

    AIと一緒に新しい言語処理系を作ってみた|shi3z
  • Lispとオブジェクトシステム

    Lispとオブジェクト、オブジェクト指向システムを概観します。

    Lispとオブジェクトシステム
  • macOSとVSCodeでLispするための備忘録|shi3z

    Lispって凄いなと思うわけだが、昔からLispを使ってみようにも実用的な使い方に辿り着かなかった。Lispも使えないくせにハッカーとは何事だと怒られそうでビクビクする今日この頃。 いろんな人にプログラミングを説明するときに、実はLispが一番いいんじゃないかと思った。だって(+ 1 2)で1+2になるっていう法則さえわかれば、Lispってなんでもできるんだぜ。for文とかwhile文とか面倒な制御構造がないので説明しやすいのではないかと思った。そもそも、a=a+1が理解できないというプログラミングの初心者つまづきポイントあるあるが回避できるし。 ところがLispは世界で二番目に古いプログラミング言語なので、命令がC++JavaScriptに慣れた人だと難しい。 やはりちょっと自分でも触ってみるかと人生で10回目くらいに思い立ったので、VisualStudio CodeでLispしてみる

    macOSとVSCodeでLispするための備忘録|shi3z
  • 関数型プログラミングと型システムのメンタルモデル

    Qiita Conference 2023 Autumun での発表資料です 発表時間の見積もりが下手で後半全然説明できませんでした、すみません! 実際のプロダクト開発ではどうすればいいのか? というケースは以下のスライドを参照してください。 (スライドは、こちらのプロダクト開発の経験を…

    関数型プログラミングと型システムのメンタルモデル
  • 【第5回】「型」はウェブシステム開発に「エンドゲーム」をもたらすか | GeeklyMedia(ギークリーメディア) | Geekly(ギークリー) IT・Web・ゲーム業界専門の人材紹介会社

    伊藤直也さんが「今逢いたい」ソフトウェアエンジニアに声をかけて対談を重ねてきたシリーズの最終回は、これまでの対談の文章化を手がけたラムダノート株式会社の鹿野桂一郎さんとの異色対談です。コンピュータ技術書や記事の編集者であると同時に仕事趣味でHaskellのプログラムも書く鹿野さんの視点を通し、現代のウェブシステム開発に伊藤さんが何を見ているのか、特に「型」と「エンジニアの学び」というこれまでの対談に通底するテーマについて掘り下げます。 ・伊藤 直也さん / 株式会社 一休 執行役員 CTO 新卒入社したニフティ株式会社でブログサービス「ココログ」を立ち上げ、CTOを務めた株式会社はてなでは「はてなブックマーク」などの開発を主導。グリー株式会社では統括部長としてSNSを担当した。2016年4月、一休に入社し執行役員CTOに就任。 ・鹿野 桂一郎さん / ラムダノート株式会社 代表取締役社長

  • こわくない関数型プログラミング

    関数型プログラミングは全部理解しようとすると難しいですが、簡単な部分の中にも有用な知見がたくさんあります。 関数型プログラミングにまだ親しんでいない人向けに、明日からのプログラミングにすぐ役に立つ考え方をできるだけわかりやすく伝えます。

    こわくない関数型プログラミング
  • いまから始めるCommon Lisp - Qiita

    この記事はLisp Advent Calendar 2017の二日目の記事です。 はじめに この記事は、Common Lispという初めての人には初めましてな言語の入門記事です。 この世には、Common Lispというとってもカッコいい言語が存在します。その言語はANSIで規格が定められており、宇宙空間で動いたり深海で動いたりし、メタプログラミングが可能で、しかもC言語並に速いという、超クールな言語なのです。 歴史あり、逸話ありのLispであって、実用的と言われるLispです。そんな言語、いますぐに始めてみたいと思いますよね? しかしググってみると、なんだか処理系っていうの (?) がたくさんあったりしてどれを選んでいいのかわからない。rbenv的なものはないの? パッケージマネージャは? アプリケーションのビルドとかどうしたらいいの? ぱっと実用的なプログラムをどう書いたらいいかわから

    いまから始めるCommon Lisp - Qiita
  • Easy-ISLisp

    ISLisp規格準拠の処理系です。OSSです。全ソースはGithubにて公開しています。 Easy-ISLisp(Windows) Easy-ISLisp(Linux Ubuntu) Easy-ISLisp(for raspberry3 Linux Raspbian) 説明 Qiitaに使用方法などを投稿してあります。下記を参照してください。 Easy-ISLispのコンパイラ Easy-ISLispの組込みエディタ Easy-ISLispでLチカタ ISLispによるLISP99 ISLispの関数などの説明

    Easy-ISLisp
  • 極小Lispインタプリタ作成で学ぶパーサーコンビネータ with Swift - Qiita

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

    極小Lispインタプリタ作成で学ぶパーサーコンビネータ with Swift - Qiita
  • やさしいLispの作り方: C言語で作るミニミニLisp処理系、竹内郁雄さんのこと、GC(ガベージコレクション、ゴミ集め)本で新刊が出る!: ホットコーナー

    ブログ(iiyu.asablo.jpの検索) ホットコーナー内の検索 でもASAHIネット(asahi-net.or.jp)全体の検索です。 検索したい言葉のあとに、空白で区切ってki4s-nkmrを入れるといいかも。 例 中村(show) ki4s-nkmr ウェブ全体の検索 ASAHIネット(http://asahi-net.jp )のjouwa/salonから。 --- 著者の笹川さんから、献していただきました。 ありがとうございます。 笹川さんの処女作とのことですが、なんと、Lisp処理系を作りながら、Lispを解説するです。\(^O^)/ こういうLisper, Lispファンがいるのは、心強いし、うれしい限り。 処女作、おめでとうごいます。\(^O^)/ http://www.amazon.co.jp/exec/obidos/ASIN/B01B1FYQVQ/showshot

  • Cより高速なCommon Lispコードを書く - 八発白中

    Cで書くコードの方がCommon Lispで書くより速いって人がいたら、それは彼のCの技量が高すぎるってことだね。 “If you can't outperform C in CL, you're too good at C.” — Eric Naggum 最近、Common Lispの非同期Webサーバ「Wookie」を高速化する過程で、ボトルネックになっていたHTTPリクエストのパース部分を高速に処理するライブラリを書きました。 fast-http - A fast HTTP request/response parser for Common Lisp 既存のライブラリ「http-parse」よりも約10倍速く、Cのライブラリ「http-parser」より5%ほど高速です。 追記 (2014/10/26): 最適化をやり直し、現在は「http-parse」よりも約27倍速く、Cの「h

    Cより高速なCommon Lispコードを書く - 八発白中
  • Lisp処理系を実装するC言語チュートリアル「Build Your Own Lisp」 - 旧gaaamiiのブログ

    すばらしいですね。「C言語で何が作れるの?」っていう疑問、そしてそれを盾にCの理解を避けてきた人は割といるんじゃないかと思います(僕です)。このチュートリアルでは最初から何を作るかがわかっているのでモチベも続きそうだし、なにより楽しそう。 「軽量言語(たとえばRuby)を使っているけどもうちょっと深く掘り下げたいという人にはよさそう(僕です)。 Learn C • Build Your Own Lisp

    Lisp処理系を実装するC言語チュートリアル「Build Your Own Lisp」 - 旧gaaamiiのブログ
  • ソフトウェア特論 講義資料 C言語によるLisp処理系

    Next: 1 Lisp処理系: Xlisp Up: Software IV Top ソフトウェア特論 講義資料 C言語によるLisp処理系 稲葉 雅幸 ここでは,LispのインタプリタをC言語で記述すること を紹介します.Lispの処理系は,read-eval-printを 繰り返すものですが,C言語でread, eval, print のそれぞれがどのようになるかを見ます. そして,Lispの処理系においては,データをreadした時, データを評価して計算中に新たにデータを生成したり, 新しいデータを結果として返したりします. 通常の計算機内で直線状に並んだメモリデータで, データの配列や長さが自由になるリストデータをどのように 表現するかが重要になります.そして,いらなくなった データがあった場合に,どのようにそのメモリデータを 再利用するのかについての仕組みを決める必要があります.

  • Lisp講義1

    • 3 • 3 •6 • 2 • (+ 1 2) • (- 5 2) • (* 2 3) • (/ 8 4) LISPの文法 式(プログラム) 評価結果(実行後)

    Lisp講義1
  • 竹内関数で音楽生成 - aike’s blog

    Lisperの人ならみんな知ってる竹内関数(たらいまわし関数)という関数があります。 定義としてはこんな感じ。 そのシンプルな定義からは想像もつかないほど複雑で膨大な再帰呼び出しがおこなわれるとても興味深い関数です。たとえば引数にTarai(10,5,0)を与えると343,073回も再帰呼び出しされたりします。 この関数呼び出しの引数がどのように変化するか知りたくてプログラムを書いて調べてみたところ、Tarai(10,5,0)の場合は3つの引数がそれぞれ0〜10(xは-1〜10)の間で少しずつ変化するなかで、2つの値を固定してひとつの値が下降していくような挙動があったりして、なんだか音楽の3和音のコード進行を思わせるような動き方です。 そういうことなら、ということで実際に音にして聴いてみました。Tarai関数が呼ばれるたびに引数のx、y、zを、0=ミ、1=ファ、2=ソ、……、のように音に割

    竹内関数で音楽生成 - aike’s blog
  • 竹内関数 - Wikipedia

    再帰的に定義される、3個の引数 x, y, z をとる次のような関数である。 特に変わる所は無いがLisp版[1]も参照のこと。定義からわかるように処理を次々にたらい回しにしていくことから、たらいまわし関数[2]、たらい関数 (Tarai function) とも呼ばれる(後述のマッカーシー版との混同を避けるためこの名で呼ばれることのほうが多いが、こちらの定義のほうがオリジナルである。マッカーシー版を特にTak関数として区別する場合もある)。電電公社研究員(当時)の竹内郁雄が、1974年の夏前の頃、後述するような特性のある関数をあれこれ考えていた、ある日の午前に思いついたものである[3]。竹内関数と命名したのは野崎昭弘である[4]。 特性として、よくベンチマークに使われる関数であるフィボナッチ数を何の工夫もなく計算するいわゆるダム(dumb)フィボナッチと比較して、大きな数の計算が必要ない

  • 1