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

Common Lisp100連発

Windymelt
August 21, 2018

Common Lisp100連発

2018-08-21に催されたLINE Developer Meetup #43(https://line.connpass.com/event/96601/) で発表したものです.

スライドの本体はこちら https://docs.google.com/presentation/d/179Ap4cB2p1JpVK7ds0cNPREcLLv3m6CJqvCKG6QepXU/edit?usp=sharing

Windymelt

August 21, 2018
Tweet

More Decks by Windymelt

Other Decks in Technology

Transcript

  1. ヤバい! • 設定も拡張もCommon Lispで書ける ◦ 本体といっしょにコンパイルできる ◦ →速い!! • よく使う機能は標準搭載している

    ◦ auto-complete的なやつ(補完機能) ◦ paredit的なやつ(カッコの均衡をとるやつ ) • Common Lispコードを開くとそのままeval・コンパイルできる ◦ 動作中(!)のコードにアタッチして関数を書き換えたりできる ◦ ↑SWANKというプロトコルで実現されてる
  2. Common Lispは古いって? • パッケージによるモジュール化(言語標準) • Unicode ◦ 主要な処理系でサポート (SBCL, ClozureCL,

    CLISP, Allegro CL, ...) • ビルドツール(ASDF3) • オブジェクト指向(Common Lisp Object System) • パッケージインストーラ(Quicklisp) ◦ ようするにgem, cpan • パッケージマネージャ(Qlot) ◦ ようするにbundler, carton • 処理系マネージャ(Roswell) ◦ ようするにrbenv, plenv
  3. 4: Webアプリケーションを作成する $ ros run (ql:quickload :caveman2) (caveman2:make-project #P"test-app") ^D

    (いったんREPLを抜ける) $ cd test-app $ ros run -S . (ql:quickload :test-app) (test-app:start :port 8080)
  4. 5: Webアプリで遊ぼう $ ros install clack # Webアプリを起動するラッパを入れる $ lem

    src/web.lisp (render #P”...”) となっている箇所を(render-json ‘(“a” “b” “c”)) にしてみる $ ros -S . `which clackup` app.lisp --port 8080 →JSONがもらえるようになった!!!