bugyoです。ご意見ありがとうございます。
>昔は自然数は1からだったのですが、0は使えないのでしょうか? :-P
>数学的には、0を自然数に含むこともありますが…
数値は0から使えます(非負の整数)。
>また、マイナス(負数)は簡単に扱える気がするんですが…
NScripterにはビット演算命令が用意されていません。
四則演算のみで補数表現を実装すれば良いとは思うのですが、
とりあえず今は後回しにしている状況です。
今後のバージョンアップで扱えるようになるかもしれません。
昔は自然数は1からだったのですが、0は使えないのでしょうか? :-P
数学的には、0を自然数に含むこともありますが…
また、マイナス(負数)は簡単に扱える気がするんですが…
zickです。バグ報告ありがとうございます。
>・一部のシンボルがちゃんと使えない。
数値の大きさ制限のために、8桁以上の数は0にするという処理にバグがあり、
なんとまあ、8文字以上のシンボルまで0にしていたようです。
修正しておきました。
>・束縛されない仮引数に、なぜかデフォルト値100が入っている。
実引数が足りない場合、仮引数をnilで束縛していたんですが、
四則演算を始め、型のチェックをしないため、
nilの内部の値である100が取得されたようです。
型チェックをつければ済むんですが、速度がなぁ……
>ちなみに体験版、地獄LISP共に、Y Combinator が動くことを確認しました。
テストプレイを頼むと、真っ先にY Combinatorを試された方がいました。
Lisperはインタプリタがあるとまず、Y Combinatorを試すんでしょうかね(笑)
ちなみに体験版、地獄LISP共に、Y Combinator が動くことを確認しました。
(define Y (lambda (f) ((lambda (proc) (f (lambda (arg) ((proc proc) arg)))) (lambda (proc) (f (lambda (arg) ((proc proc) arg)))))))
(define fact0 (lambda (f) (lambda (n) (if (= 0 n) 1 (* n (f (- n 1)))))))
((Y fact0) 5) => 120
まあ動いて当然なのですが、個人的にはこれだけでなんかすごく満足です。
では、ご健闘を祈ります。
>>zick 様
試験でお忙しいところ、ご対応ありがとうございます。
地獄LISPで(sum 10)が動くのを確認しました。
体験版の末尾再帰については、当方も気になって追試しましたが、
5000回まわしても落ちません。何だったのでしょう?再現したら
またご連絡します。
それにしても、この最適化のおかげで、この処理系はグッといじり甲斐が
上がっていると思います。継続渡しスタイルでたいていのものが書けますから。
NScripterというものを知らなかったのですが、かなり特殊なものなのですね。
Schemeの実装自体がジョークになるような。
ならばバグ修正以外の使い勝手の要望はむしろ無粋かもしれませんね。
--------
ところで、バグ?報告です。
・一部のシンボルがちゃんと使えない。
(define sum-from0 10)
sum-from0 => 0
・束縛されない仮引数に、なぜかデフォルト値100が入っている。
(define (func x) (+ x 0))
(func) => 100
>地獄LISP
(1)ifのバグを修正(というよりFEXPRをFSUBRにした)
(2)述語=をとりあえず作成(単に (define = eq?) としただけ)
以上の変更を加えておきました。
>ただ、200回ぐらい末尾再帰させたら、一度落ちました。
単に再帰するだけだと永遠にでもできるはずなんですが…
メモリを消費することを平行してやっていたのでしょうか?
>せめてヒストリがあればと思いました。
アイディアをありがとうございます。
ただ、NScripterが受け取れるのはEnterとtabだけなんで、少々難しいかと……
どうにかできないか模索してみます。
はじめまして。
体験版プレイありがとうございます。
>ところで、地獄LISPで以下の関数がきちんと動かないのですが、これは仕様でしょうか?
>(define sum (lambda (x) (if (= x 0) 0 (+ x (sum (- x 1))))))
まず、関数=を用意していません。eq?を使ってください。
しかし、eq?を使ってもうまくいきませんでした(笑)
ifをcondに変えたところ上手くいったので、ifにバグがあるかと思います。
暇があったら直しておきます。報告ありがとうございました。
はじめまして。体験版を少し触らせていただきました。
λ山は笑いました。
チュートリアルは、一応全部目は通しましたが、あんまりよく見てません。すみません。
Scheme処理系は、遅いけどそれなりに動くので、楽しませていただきました。
確かに末尾再帰の最適化もやってくれますね。
ただ、200回ぐらい末尾再帰させたら、一度落ちました。
あと、エディット画面は1行でも仕方ないから、せめてヒストリがあればと思いました。
ところで、地獄LISPで以下の関数がきちんと動かないのですが、これは仕様でしょうか?
(define sum (lambda (x) (if (= x 0) 0 (+ x (sum (- x 1))))))
(sum 10) => 0
サウンドについて
ゲームのBGMの音量が調節できないので、五月蝿いかもしれない。
ネタについて
もっと捻らないとヲタな人も、Lisperな人も楽しめないので
サプライズをたくさん用意しよう。
λ山について
OPで某山の画像に気がついてくれる人はどのくらいいるんだろうか?
よろしければ感想などお聞かせ下さい。バグ報告などもこちらで。
1 [過去ログ]