Gauche
install
$ brew install gauche
emacsで起動
Emacsのコマンドを理解せずに打ってるのでそのまま書く

$ emacs
emacs起動
C-x C-h
defaultで表示されているやつを消す
これやり方合ってあるのか知らん

適当にこれやったら消えたのでこれでいってるだけ
もしくは C-x h
で全体を選択して消すか
C-c G
これを実行することで別windowでGaucheを起動
左側のwindowでgaucheを書く
式を書いてカーソルを最後に合わせて C-x C-e
で実行されて右に表示される
あとは適当にここでやっていけばいい
複数行の入力もできる
終了
C-x C-c
Gaucheで使うEmacsの便利なコマンド
慣れてきたら覚えよう

便利な設定とか
VSCodeの設定は知らん
goshコマンドでも起動できる
が、左右移動できないとかで不便
やりようあるかもしれないがめんどいので調べてない
$ gosh
> (exit)
インタプリタ終了
$ gosh hoge.scm
実行
真偽値は #t
, #f
条件分岐
パターンマッチ的なやつ
cond
(cond [<条件式> <返す値>] [<条件式> <返す値>] [else <返す値>])
例
find.lisp(define (find pred lis)
(cond [ (null? lis) #f ]
[ (pred (car lis)) (car lis) ]
[ else (find pred (cdr lis)) ]))
角括弧 []
は、丸括弧 ()
でもどっちでもいい
[]
の方が他の括弧と別に目立つので可読性が上がってちょっとうれしい
この関数をHaskell風に書くとノリがわかる
hsfind f xs
| xs == [] = False
| f $ head x = tail x
| otherwise = find f $ tail x
このコードはコンパイル通らないし、普通もうちょいスマートな書き方をするがイメージとして

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