2010-10-01から1ヶ月間の記事一覧

言語名(2)

今日もゲーセンに行ってマリオカート2をやってきた。キャラの名前はBlinkyでなくAKABEIだった。言語名が、Akabeiで拡張子が、.akかな。でも、Tenpraの方が良さそうかな。

カリー化

def foo(a, b, c): print(a, b, c) foo1 = foo(1, @, @) foo1(2, 3) #=> 1, 2, 3 foo(1, @, @) #=> オブジェクトが宙に浮いているのでエラー(必ず代入するか、呼び出すかのどちらかが必要) このカリー化のやり方だと、前出のブロックを代入する場合に、どの…

ブロックを引数に与える

Rubyの [1, 2, 3].each {|x| puts x } は、以下のようになる。 [1, 2, 3].each(@) {|x| print(x) } スロット演算子@で与えたところに、ブロックが代入される。しかし、listにeachというメソッド持たせるのは、Python流ではない。Pythonならfor文を使用すると…

言語名

昨日の夜一生懸命考えて、外人ウケを狙ってTenpraという名前を考えた。コマンドを打ち込む時にちょっと長いがPythonと同じ文字数の6文字。Tenpuraは7文字で長いから'u'を削った。拡張子は、本当は2文字が良かったが、3文字の.tprとなる。 もう一つの案は、パ…

クラスの定義(2)

おとといの日記では、(1)の部分のFoo.__init__()内のselfの扱いがうまくいかなそう(selfはレシーバであるとするとうまくいかない)。以下のように変更。 class Foo: def __init__(): self.a = 1 def foo(): print(self.a) class Bar: mixin(Foo.__block__) # …

クラスの文法

クラスは以下のように定義、使用する。基本はPythonベース。以下の特徴がある。 インスタンスメソッドの第一引数にselfは不要 関数とメソッドの区別はしない。関数定義時にselfキーワードを使用できるが、メソッドでなく関数として呼び出した場合は、selfはN…

自作言語の妄想

日経ソフトウェア8月号を購入出来た。もうじき届くはず。これでMILを勉強できる。とりあえず自作言語は、Pythonでリファレンス実装して、後でCにポーティングするつもり。とりあえず自作言語の機能を妄想してみる。 基本はPython3の文法をまねる。文字列フォ…

スクリプト言語MIL

http://d.hatena.ne.jp/kmaebashi/20100704/p1 雑誌を購入しようと思ったら、既に取り扱いが終了していた。書籍化されるのを待つしかない。 以前から関数型言語の機能を持ったハイブリッドな簡易のPythonベースの言語を作りたいと思っているが、何言語で作る…