佐々木将人の個人ページへ

はじめてじゃない人のための Lisp Flavored Erlang

LFE と Erlang と,時には他のLispも

……竹内郁雄先生ごめんなさい……。

本家LFEの公式サイト https://lfe.io/

話の発端は,Pleromaという分散型SNSのサーバープログラムをインストールすることができない(mastodonはできたのに)というところからでした。
インストール手順を再検討すると同時に,PleromaがElixirという言語で書かれているというので,Elixirの本も読み始めました。
Elixirというのは,Erlangを元に作られたというのを知り,Erlangを実行する環境で動くという話を聞いて,Erlangについても調べて見ました。
ところで……。
Erlangというのは難解だと言われていて,「Erlangを実行する仮想マシンは優秀だけど,Erlang自体は……」みたいな言われ方もしているくらいなんだけど……。
本をパラパラめくった限りでは,
「Erlangそんな変じゃないやん。」
確かにオブジェクト指向全盛のこの時代,関数型言語自体がとっつきにくいとか,一周回って新鮮だって話になるけど,Lispの世界で物を考えてきた私からすれば,Erlangそんなに変ではなかったのでした。
……まあ,実際にプログラム書くとなればまた話は変わるのかもしれないのですが……。
そうすると,Erlang自体から逃げる理由はないわけですし,ElixirもErlangベースだってわかると,
「もしかしたらErlangベースのLispだってあるんじゃないの?(だってJavaに対するClojureがあるわけで)」
と思って探してみると案の定あるわけです。
それが,Lisp Flavored Erlang 略してLFEなわけです。
というので,LFEを本格的に勉強してみようかな……という次第。
(平行してErlangも勉強してみるわけです。)

ちなみに Lisp Flavored Erlang は,Erlangが走る仮想機械BEAMで動くLispです。Erlangでできることはたいていできるとの評判です。

目次

はじめる前に

Lisp Flavoured ErlangとErlangのインストール
対話環境とプログラムのロード(Lisp編)
対話環境とプログラムのコンパイル(Erlang編)
資料 Erlangのシェルモードでのコマンド群

LispとErlangの基本

1 Lispの基本原理
2 Lispの内部構造
3 Erlangにおけるリスト
4 Erlangにおけるデータ型
5 Lispにおけるデータ型
6 述語関数
7 Lispにおける選択・条件分岐
8 Erlangにおけるパターンマッチの基礎
9 Erlangにおける選択・条件分岐
10 ループではなく再帰
資料 Erlangのデータ型・データ型を調べる関数・データ型を変換する関数

プログラム例

1 ファイル全部を読み込むけど何もしないで書き出す基本のフィルタ


(2021.10.21. 初版)
(2023.9.7. 改訂)