guile

Msys2 で Guile をビルドする時にビルドする人がしなければいけないこと

ビルドする際、以下のようなコンパイルエラーが出る:: net_db.c: In function 'scm_gethost': net_db.c:144:18: error: storage size of 'inad' isn't known 144 | struct in_addr inad; | ^~~~ net_db.c:174:21: warning: implicit declaration of function…

Guile では call-with-input-file の proc 内でエラーが起きるとポートが閉じられない件

問題 あんまり問題とは言えないかもしれないが、 (proc port) 内でエラーが起きた場合、ポートを閉じる手続きが呼ばれない。 助けてドラえもん!! とはいえ、プログラムが終了する時に全てのポートは自動的に閉じられるとかどこかに書いてあった気がするの…

バックトレースとか、スタックフレームのこと

さて、現在のスタック・トレースを得るには make-stack 関数を呼び出します。 引数の #t を忘れないようにしてください: (define a-stack (make-stack #t)) a-stack の型をとりあえず <stack> としましょう。 <stack> オブジェクトの中には <frame> オブジェクトが幾つか含まれて</frame></stack></stack>…

Q. スラッシュが付く数を普通の小数点数にするには?

A. ╰( ´◔ ω ◔ `)╯ exact->inexact を使おう guile はなんかすごくて、Scheme なのに (/ 1 2) とかやると 1/2 が返ってくる。 Common Lisp かよ!! って思わず突っ込んじゃったよね (。・_・。) スラッシュが付く数というのは 1/2 とか 3/2 とか分数で表せる値の…

guile とかで Cradle っていうビルドツール書きたい感ある

Gradle 見てるとビルドツール書きたくなるよね! で、考えたのがこーいう書き方: (task greeting () (println "Hello, World!")) (task count () (map (lambda (it) (print it " ")) (iota 4))) (task intro (#:depends-on greeting) (println "I'm Cradle."…