2018-01-01から1年間の記事一覧

funcall vs apply

funcall と apply は両方とも第一引数に指定された関数を残りの引数に対して実行するのに使用できます。 基本的に、引数がリストではない場合はfuncallを使用し、引数がリストの場合はapplyを使用します。 ちなみにapplyは最後の引数がリストであれば、その…

極限までシンプルなREPL

REPL (Read-Eval-Print-Loop)は文字通り read、eval、print、loop関数を使用して実装sすることがします。 まずは最もシンプルな形式から。 read関数で読み取った入力をeval関数で実行し、print関数で出力しています。 現在のREPLでは、どこからREPLが開始さ…

prin1、princ、print の違いについて

Common Lisp には出力に使用される関数が複数存在します。今回はそれぞれの個性について自分なりに調べた結果を書いていきます。 prin1 read 関数に使用しやすいフォーマットとは、上記のように文字列を出力することです。人が読みやすいフォーマットで出力…

リスト内を検索する

Common Lispにはエレメントがリストに含まれているかを検索する関数が複数存在します。今回はそれぞれの違いについて自分なりに解説していきます。 find find 関数は第一引数が第二引数のリストに含まれている場合、第一引数を返します。第一引数が第二引数…

eq、eql、equal、equalpの違いについて

今回は Common Lisp の eq、eql、equal、equalpの違いについて書いていきます。 eq eq は 第一引数と第二引数が同じオブジェクトの場合、true を返します。 eq は主にシンボル同士を比較する場合に使用します。 eql eql は eq が true を返す場合と、数字とc…

mapcar, mapcan, mapcの違いについて

Common Lispにはリストのエレメントに関数をマッピングする関数が複数存在する。 今回はその中でもよく使う三つの関数 mapcar、mapc、mapcan の違いについて解説していきます。 mapcar mapcarは第一引数の関数を第二引数以降のリストに適用することができま…

assocでalistから値を取り出す

alist (Association Lists) はkey/valueペアのリスト。assoc関数でkey/valueペアを取得し、car/cdrを使用することでそれぞれの値を取得することが可能。 assocは最初にマッチしたkey/valueを返すため、先頭に値を追加(push)することで、取得するデータを更新…

Lisp 勉強のための学習本

自分用のメモ。随時更新していきます。(最終更新:2018/03/25) Common Lisp Land of Lisp Land of Lisp 作者: M.D. ConradBarski,Conrad Barski,川合史朗 出版社/メーカー: オライリージャパン 発売日: 2013/02/23 メディア: 大型本 購入: 1人 クリック: 18…