Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Lispの紹介 〜 令和最新版

t-sin
January 25, 2024

Lispの紹介 〜 令和最新版

Shibuya.lisp lispmeetup #113で発表したときのスライドです。

t-sin

January 25, 2024
Tweet

More Decks by t-sin

Other Decks in Programming

Transcript

  1. Lispと似てる点: 高階関数 • Common Lispによる例 (RosettaCodeより) https://rosettacode.org/wiki/Function_composition#Com mon_Lisp > (defun

    compose (f g) (lambda (x) (funcall f (funcall g x)))) COMPOSE > (let ((sin-asin (compose #'sin #'asin))) (funcall sin-asin 0.5)) 0.5
  2. Lispはいっぱいある • たくさんの処理系がある – Scheme, Common Lisp, Emacs Lisp, Arc,

    Clojure, Carp, … • その理由はおそらく… – Schemeが言語機能の実験場だった時期がある – 比較的単純なのでアイデアをすぐに実現できる – LisperがLisp大好きすぎる (?)
  3. Lispの自己拡張性 • 関数を定義すると語彙が増える – 関数呼び出し構文はビルトインでもユーザ定義でも同じ – →言語を拡張している • ほかにも –

    Lispのマクロ – 拡張可能なパーサ (Common Lisp) – 実行時情報をREPLで変更 (Common Lisp, Clojure) – 実行時にクラス定義の変更 (Common Lisp)
  4. Lispの誤解集: 関数型言語である • 手続き型言語です • 高階関数とかあるけど再代入とか破壊的変更よくや る – オブジェクト指向だとなおさらやる •

    Clojureは関数型言語っぽさを推しているけど、一 部破壊的変更ができるので全体としては関数型では ない
  5. Lispの事例集: スクリプト言語 1 • GNU Emacs (Emacs Lisp) – エディタの設定とスクリプティング

    • AutoCAD (AutoLisp) – CADのスクリプティング – CADってコマンド操作が基本っぽい
  6. Lispの事例集: スクリプト言語 2 • Audacity (Nyquist) – Audacityは音声波形編集ソフト – Nyquistは音声信号生成もできる

    • ALSA (alisp) – ALSAはLinuxのオーディオ抽象化レイヤー – 設定言語が実はLisp • `find / | grep alisp`してみると…?
  7. Lispの事例集: Webサービス • ハチペイのバックエンド (Common Lisp) – 渋谷区の決済アプリ – https://www.hachi-pay.tokyo/

    – 株式会社ポケットチェンジ • 広告媒体アカウント管理システム (Clojure) – https://tech-magazine.opt.ne.jp/entry/2021/01/13/124551 – 株式会社オプト • Practical Scheme (Gauche Scheme) – https://practical-scheme.net/ – 川合史朗さん
  8. Lispの事例集: ゲーム • クラッシュ・バンディクー (1と2) – GOAL (Game Oriented Assembly

    Lisp) というLisp • Kandria (Common Lisp) – メトロイドヴァニア系アクション – https://store.steampowered.com/app/1261430/Kandria/ • Steamで買って遊べます!!!
  9. Lispの事例集: ツール (1) • pgloader (Common Lisp) – PostgreSQLのdump/loadツール –

    https://pgloader.io • Maxima (Common Lisp) – 数式処理システム (Mathematicaみたいなやつ) – https://maxima.sourceforge.io/
  10. Lispの事例集: ツール (2) • Lem (Common Lisp) – テキストエディタ •

    Roswell (Common Lisp + C) – Common Lispの処理系マネージャ • Senn (Common Lisp) – 日本語入力メソッド (IME) – https://github.com/mhkoji/Senn
  11. Lispの事例集: 作曲環境 • Opusmodus (Common Lisp) – https://www.opusmodus.com/ • Overtone

    (Clojure) – https://overtone.github.io • Extempore (Scheme) – https://github.com/digego/extempore
  12. Lispの事例集: そのほか 1 • Nyxt (Common Lisp) – キーボード指向のウェブブラウザ –

    https://nyxt.atlas.engineer/ • Mezzano (Common Lisp) – オペレーティングシステム – https://github.com/froggey/Mezzano