関数とハッシュという、プログラミングにとって非常に重要であることに気付いた 2 つのことについて、非常に短い構文で DSL をプログラムしたいと思います。これは私のデザインです:
ハッシュを作成します:
(a:1 b:2 c:3)
Same as JavaScript's: {a:1,b:2,c:3}
キーを省略して、順序付きハッシュを作成します。
(x y 5)
Same as JavaScript's: {0:'x', 1:'y', 2:5}
無名関数を作成します。
(a?)
Same as JavaScript's: (function(x){ return x.a; })
Example application:
((test a? b?) (a:1 b:2 c:3))
>> Outputs (test 1 2)
ネストされた関数:
(a? a?')
Same as JavaScript's: (function(obj1){ return function(obj2) { return [obj1.a,obj2.a]; }; })
Example double-application:
(((a? a?') (a:1)) (a:2))
Is reduced to: ((1 a?) (a:2))
Then outputs: (1 2)
そのような DSL の実装に適した言語は何ですか?