Scheme

Shibuya.lisp テクニカルトーク #3

http://shibuya.lisp-users.org/2009/06/13/sltt-3/勢いで申し込んだ(聴く方ね)。最近は東京に行き過ぎな気がする。そして忙しいときに限って遊びたい。

イテレータをストリームに

Schemeで関数呼び出し型のイテレータ(内部イテレータ)をストリーム(遅延リスト、外部イテレータ)に変換する関数を書いたよ。元のイテレータはいじる必要ない(条件があるけど)。以前、素数ストリームが遅すぎるって書いたけど、これだったら使えるはず…

カリー化

Haskellの本読んでて便利だなと思ったのでSchemeで。 (define-syntax curry (syntax-rules () ((curry f ..) (lambda rest-args (apply f (append (list ..) rest-args)))))) すんごい簡単だ。マクロじゃなく関数でも書けるけど、言語機能として提供するなら…

2659. Carl

https://www.spoj.pl/problems/CARL/ またまたゴルフ。今回は言語の制限がなかったので、Schemeでやってみた。というか、入力がS式なのでScheme,Lispならreadするだけで読めるのでパーズ部分がいらない。以下コード。 (use-modules (ice-9 format)) (do ((v …

素数ストリーム

久しぶりにProjectEuler。Schemeで解こう。100万以下ぐらいまでの素数列が必要になったので、素数ストリームを生成する関数を書いた。昔SICPで読んだのを思い出しながら。 (use util.stream) (define (prime-stream) (define (sieve s) (let ((v (stream-car…

連続投稿、ソースコード貼り付けテスト

どうなのかな、と。Scheme の階乗関数。 (define (f n) (if (<= n 0) 1 (* n (f (- n 1))))) これは便利だ。プログラマではてなブログ使ってる人が多いのもうなずける。