上は、ネタ本「C言語によるアルゴリズム入門」の電卓プログラムの前段、トークン解析をRubyに置き換えてみようかと、始めました。良くわからないので、出きれば同じようにやってみようと思ってますが、Rubyに無いenumとかで引っかかってましたが、結論としては、整数値と単語をつないでいるだけだと思い、Hashでも良いかも?或いは、配列の添字でも良いかもと思いました。
とにかく、分かる範囲で、始めないと、進みませんから。
関数の定義と実行、これで出来たんですかね?
その他に、図書館からPythonの参考書を2冊借りてますが、手一杯でできないかも?自分は昔買った本を見てますが、図書館のは新しい。「入門者のPython」と「Pythonによるプログラミング入門」、どっちも良いようですが、特に後者は、サンプルが短いが、お互いが関連性を持っている問題が、関数プログラミングを彷彿?とさせます。前者は例題が長いのですが、プログラムの開発のステップを踏んだ感じが良いと思います。自分はAnacondaを入れて、Spyderを使ってやってます。後者はitaとかいうライブラリを使っているためか?Spyderでは駄目で、IDLEを使う必要がありました。
どちらも中断中です。(笑)
それは変数定義、ですね。
実はSchemeでは変数定義も関数定義も同じようにdefineを使います。
;;; 変数定義
(define greeting "hello, hello")
;;; 関数定義
(define greeting (lambda () (display "hello, hello")))
前者は変数greetingに"hello, hello"を束縛してる(関数型言語では「代入」の代わりに「束縛」と表現します)。
後者は変数greetingにラムダ式を束縛してる。
このカタチが「関数定義」です。
ただし、ラムダ式束縛表記は面倒なんで、省略記法として次のように書きます。
(define (greeting) (display "hello, hello"))
あと、言語設定がR5RSになってますね。
狙いが特に無いのなら、"Determine language from source"にした方が良いでしょう。
そうしたらRacketの全機能が使用可能です。
なお、R5RSの仕様書は次からダウンロード可能ではあります。
R5RS:
https://www.unixuser.org/~euske/doc/r5rs-ja/r5rs-ja.pdf
Schemeの学習だと、星田さんがやってる
もうひとつのScheme入門:
https://www.shido.info/lisp/idx_scm.html
がオススメです。
ここを終えたらSchemeで一通りの基本的なプログラムが書けるようになるでしょう。
もし、サンプルが欲しいのなら・・・そうだなぁ。
星田さんにも薦めたけど、ポール・グレアムと言うLisperが作ったArcと言うLispのソースコード
Arc:
http://www.arclanguage.org/arc3.2.tar
を読んでみる、とか・・・・・・。
ArcはRacketで書かれたLispで、要するにLispで作られたLispです。
従って、ソースコード自体はRacket/Schemeで書かれていますね。
あとは、GIMPとか知ってます?AdobeのPhotoshopに対抗するように作られたフリーソフトなんですが。
Gimp:
https://www.gimp.org/
これのマクロ言語(Excelに対するVBA)みたいなのがSchemeです。
結果、 Gimp用の便利スクリプトはSchemeで記述されているケースが多いです。
Gimp Help.org:
https://www.gimphelp.org/DL/gimp_scripts-2.10.zip
これには実際Gimpで使えるユーティリティが入っていて、「実際Gimp上で使える」Schemeのコードになっています。
んで、本当の事を言うと、ある意味有名無実化してますが、GNU Linuxの公式スクリプト言語は実はSchemeです。
従って、言わばLinuxのVBS(Visual Basic Script)にあたるスクリプト言語がSchemeなのです。
Gimpは知りませんでした。使うだけ、やってみたいですね。(笑)
今のとこは、候補はScheme入門ですね。