generated at
Gauche
Scheme言語の処理系
作者は川合史朗
Common LispPerlの影響を強く受けている


install
$ brew install gauche



emacsで起動
Emacsのコマンドを理解せずに打ってるのでそのまま書くmrsekut
$ emacs
emacs起動
C-x C-h
defaultで表示されているやつを消す
これやり方合ってあるのか知らんmrsekut
適当にこれやったら消えたのでこれでいってるだけ
もしくは C-x h で全体を選択して消すか
C-c G
Emacsの設定ファイルに書いたコマンドmrsekut
ここの設定をコピペしたので本と起動方法が異なる
これを実行することで別windowでGaucheを起動
左側のwindowでgaucheを書く
式を書いてカーソルを最後に合わせて C-x C-e で実行されて右に表示される
あとは適当にここでやっていけばいい
複数行の入力もできる
終了
C-x C-c



Gaucheで使うEmacsの便利なコマンド
『プログラミングGauche』 p.23とかに書いてる
慣れてきたら覚えようmrsekut


便利な設定とか
Emacsの設定ファイルに書いていくといいmrsekut
VSCodeの設定は知らん


goshコマンドでも起動できる
が、左右移動できないとかで不便
やりようあるかもしれないがめんどいので調べてない
$ gosh
> (exit)
インタプリタ終了
$ gosh hoge.scm
実行



真偽値は #t , #f






条件分岐
lisp
(if (> 3 2) 2 1)

パターンマッチ的なやつ
cond
(cond [<条件式> <返す値>] [<条件式> <返す値>] [else <返す値>])
find.lisp
(define (find pred lis) (cond [ (null? lis) #f ] [ (pred (car lis)) (car lis) ] [ else (find pred (cdr lis)) ]))
角括弧 [] は、丸括弧 () でもどっちでもいい
[] の方が他の括弧と別に目立つので可読性が上がってちょっとうれしい
この関数をHaskell風に書くとノリがわかる
hs
find f xs | xs == [] = False | f $ head x = tail x | otherwise = find f $ tail x
このコードはコンパイル通らないし、普通もうちょいスマートな書き方をするがイメージとしてmrsekut



関数名の末尾に ! があるやつはなに?
慣習なんだろうけど、何の慣習なのかわからない
破壊的変更とか?