試行錯誤でしたが、なんとか結果は出ました。WhitespaceはSchemeで開発されたプログラム言語ですか?fact.wsはそれを使ったアプリということなんですかね?どっちもチンプンカンプンですが。
cametan_42さんが面白いけど、むずかし、事を書いてます。興味はあるのですが、なかなか理解が伴わない。ShemeとかDrRacketを使い込んでいないと細部の理解は無理かも。最後に10000!を計算してますが、Rubyでも出来るかと思ってやってみました。しかし1000!までは出来たんですが、10000!は最後まで行きません。終了します。
出力が一行なので、見づらい。
数値を文字に変化して、桁で区切るルーティンがありました。区切りを"\n"にしてあとはそのままです。ネットから拾いました。
Rubyは大きな数でも、良きに計らえ、でやってはくれますが、出来ないことも有るんですね。
cametan_42さんのブログに、10000!階乗の実行方法が載ってますが、やり方が分かりません。downloadでSchemeのDrRacketのファイルがダウンロードされるのかと思ったんですが、使い方の表示されているtxtファイルがダウンロードされただけです。やり方が違うようです。
訂正)出だしで、cametan_42さんの敬称が落ちてました。ごめんなさい。訂正します。
equal?は内容を調べます。eq?はアドレスを調べるようです。リストや数値、文字列も調べられるようです。
今参考にしてるサイトです。PDFファイルです。
上の図でsampleは、何故(list? sample)が#fなのか?sample自体をみると、リストに見えます。
sample2は一体何者?(list? sample2)でも(pair? sample2)でも、#fです。
listの条件として、最後の要素の右が"'()”で終わっていること。
test.libとtest2.libの2個出来ました。この文のcompileは成功したようです。
カレントの画面が上です。下の画面をアクティブにしてから、C_c、C_kをしないとだめのようですね。
コンパイルな成功です。ただ、どうやれば実行できるのでしょうか?(kakeru 10 20)で実行できると思いますが。
画面を閉じるで終了すると、上のメッセージが出ることがありますが、どうすれば出ないで終了できるのでしょうか?なにか不都合が起きることが有るのでしょうか?
cametan_42さんのブログに、WindowsでEmacsを使って、Lispを動かす書き込みがあります。
slimeを使ってやってみると出来ます。
test.libは一度コンパイルできたとき、作られたようです。
メニューからtools,complileだと出来ません。make用のファイルがないということでしょう。しかしC-c,C-kでも一度は出来たんですが、その後出来ません。出来たときは画面が上下2つ出来てたように思います。何がいけないんでしょうか?実行はTASUが出きれば、(tasu 10 20)出できたと思います。
訂正です。 上の図のソースは間違っていますね。
追加)
上の図は、Emacsを起動後、file openでファイルを読み込んだあと、C-c,C-kしたあとの画面です。Not connectedとメッセージが出てます。ファイルの拡張子も良いと思いますし、何が間違っているんでしょうか?
そもそも関数の定義の仕方が違います。defunから始まるClisp、defineから始まるScheme(ここではDrRacket)違いを意識しないと、ダメみたいですね。
cametan_42さんのブログに、WindowsでEmacsを使って、Lispを動かす書き込みがあります。
環境変数HOMEを作って、場所はc:\homeとしたら、あとは手順通りで出来ました。
ただ一箇所、auto-completeと書いてあって、emacsには(require 'auto-compile)となっているところで、errorだと思いますので、package-installの方を、auto-compileに直したら良いようです。下はcametan_42さんのブログのSS。
--------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
今のとこは、DrRacketでやれたことを、やってみるしか無いのですが、そこはどこを見れば書いてますか?調べないとですね。
cametan_42さん、有難うございました。
cametan_42さんのブログに、WindowsでEmacsを使って、Lispを動かす書き込みがあります。
前回、Emacsのバージョンが少し古かったので、それをホルダーごと削除。新しいものをダウンロード、インストールしたのですが、slimeのインストールで引っかかります。no matchとなります。
以下はcametan_42さんのブログのSSです。
-----------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------
右のリンクはだめだったので、左のこのページからDLしました。
cametan_42さんのブログに、WindowsでEmacsを使って、Lispを動かす書き込みがあります。全くの初心者の自分は、DrRacketで十分ですが、何しろ、開発環境オタク?(必要もないのに)なので、やってみたくなったのですが、途中でストップしました。
slimeのインストールをしようとしたんですが、gzipが見つからないとerrorです。7zipでは駄目なんですかね。またはWindowsの解凍ツールでも。
加算+はもともと、引数を複数取ることが出来るので、関数を定義するまでもなく、下の画面だけで合計が出ます。関数の名称も変更できます。追加かも知れません。同じような機能のaddを作れるかやってみましたが、引数が2個だけしか出来ませんでした。何故?
加算の他、乗算も引数は複数取ることが出来ます。
減算、除算も複数の引数を取ることが出来ます。
有るサイトに、円柱の体積問題が有ったので、やってみました。底面積x高さで、答えは出ます。teimensekiはcircle_areaの別名でいけますね。bottomはcylinder_vol2の内部だけで使えるローカル変数のようです。
関数を定義する時に、定義されている関数を使うことが出来る、使わないで定義することも出来るが、見通しがよくなるようです。引数に関しては、合うように変えないとならない。
関数を一つずつ確認しながら、意味を理解するため。
意味を確認して、関数をほうりこんでみました。が、スッキリしません。
回答を見ながら、定義済みの関数を使ってみました。分かりやすいのかも知れません。慣れていけば、分かりやすいのかも?
大事なのは、例えば(distance2 40 30)の中を見ると、(dist vx t)になっている。更に、中を見ていってもvxでもtでも、形式が守られている。これが関数プログラミング、なんでしょうかね。
変数で良いのかな?定義と関数の定義及び、シュガースティックでなく、タックスシュガーだったか?便法ですね。
練習問題には回答も載ってますので、改めて載っける意味有るのか?ですが、一番最後だけ少し違います。一行で全て書くのは流石にできないことも有るでしょう。部分的に書いていって、合体する、みたいな書き方を探ってみました。少しだけ。(笑)
一番最初のが、偶数というものの定義そのまま。多分ですけど。0の場合をやってみてませんでした。”=”を書く場合は、こんな感じですね。
0は偶数で良いようです。マイナスも関係ないようです。”-1”は偶数でなく、"-2"は偶数です。