サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
買ってよかったもの
gikoforth.s13.xrea.com
_ [言語] Concatenative Lispがブラックホールのような存在だと言われることの原因の一つに、現代的なプログラム言語の多くがlambda calculusを理論的な核にしていることが挙げられるのではないかしらん。 そしてlambda calculusへのマッピングでの理解が困難な言語は、一般に、抽象度の低い原始的な言語であると理解されてきた面が否めないのではなかろうか。 今、lambda calculusベースの言語を仮に「ラムダの子」と呼ぶとする。 「ラムダの子」は数が多く、そしてまた多くの言語がこれら「ラムダの子」の眷属となっている。 ところで、ある少数の言語は「ラムダの子」たちとは異なった生い立ちを持っていた。 このような言語にはAPLやJ、BackusのFPやその一族などがある。 彼らはcombinatory logicあるいはFP systemと呼ばれ
_ [言語][Forth][Joy] それは逆ポーランドじゃない(1) 一応、この前のエントリの続き・・・なのかな? Joyの(中の人の)指摘として、我々スタック族が使っている記法は、本当は逆ポーランド記法じゃない、というものがあります。 逆ポーランド記法の元となるポーランド記法は、1920年頃ポーランド人論理学者Jan Łukasiewiczによって考案されたものだそーですが、ポーランド記法では括弧を使わなくても式の意味が一意に決まることが利点として知られています。 ということは演算子のarityは既知であることが前提であるわけで、その意味では可変長引数をとるLispの記法もまたポーランド記法ではありません。 さて、それはともかくとして、ポーランド記法を左右反転したものが逆ポーランド記法、そしてその逆ポーランド記法を採用したのがFORTHやPostscriptなどの「スタック族」
SukunaはOO拡張を最初から組み込んであるForth dialectです。 Mops、Joy、Rubyなどに影響を受けて作られました。 関数定義 { square dup * } または { square | x | x x * } Bank Account class BankAccount float dollars accessor { deposit: self :dollars :+ self :setDollars } { withdraw: :negate self :dollars :+ 0 :max self :setDollars } end BankAccount :new -> MyAccount 200 MyAccount :setDollars MyAccount :dollars :p cr # 200.000000 50 MyAccount :depos
GikoForthは、pForthをベースに、非分かち書き日本語プログラミング風な表記ができるようにしたオブジェクト指向Forthです。 役に立ちませんが、まったりと気分が乗った時に断続的に開発しています。 最近、全く更新してません。 Sukunaは、単一継承+Mix-in、ブロッククロージャ、ガベージコレクターなどを備えたForth方言です。 整数、浮動小数点数、文字列、Vector、ブロッククロージャなどが一応オブジェクトとして扱えます。 逆ポーランド記法とブロッククロージャの組み合わせでシンプルなFunctional Programmingぽいこともできたりします。 どのみち役に立ちませんが、もう少し役に立つ物にならないかと思案しながらまったり開発中です。
このページを最初にブックマークしてみませんか?
『Project GikoForth』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く