Boo始めました

Booの良い資料もないし、
どっかのサイト見ても英語ばっかりだし
本もないし、って感じでやろうかやらないか
ずっと考えてたら良いサイトあったのでやりました。

今日は匿名関数っていうのに感動しました。

//Boo
>>>def f(s as string):
...    return def(q as string):
...        return s+q
...    
>>>f("Hello, ")
Input15Module+$f$closure$1.Invoke
>>>a=_
Input15Module+$f$closure$1.Invoke
>>>a("World")
'Hello, World'

>>>def make_i(n as int):
...    return {x as int|x + n}
...    
...    
>>>make_i(10)
Input2Module+$make_i$closure$1.Invoke
>>>a=_
Input2Module+$make_i$closure$1.Invoke
>>>a(20)
30
//こういうことも...

というものです。
匿名関数はPythonに入ってないんじゃないかって思ったけど、
lambdaとは別なのかな〜って思ったり。

#Python
>>> def f(s):
...  return lambda q: s+q
... 
>>> f("Hello, ")("World")
'Hello, World'

正直lambdaとか一行関数のときにしかつかったことなくて
今初めてこんな使い方しました。なんか自分でも驚いた。

他に似てる所はぁ…

//Boo
>>>[1,"2",3.0,"FOUR"]
[1, '2', 3, 'FOUR']
>>>c=_
[1, '2', 3, 'FOUR']
>>>c[1]
'2'
>>>c[-1]
'FOUR'

//Pythonならappendとかremoveだけど
//Booなら
>>>c.Add("HOGEHOGE")
[1, '2', 3, 'FOUR', 'HOGEHOGE']
>>>c
[1, '2', 3, 'FOUR', 'HOGEHOGE']
>>>c.Remove("2")
[1, 3, 'FOUR', 'HOGEHOGE']
>>>c.RemoveAt(2)  
[1, 3, 'HOGEHOGE']
>>>c.Clear()
>>>c
[]

//Pythonより豊富だと…?

>>>for i in range(10):
...    print(i)
...    
...    
0
1
2
3
4
5
6
7
8
9
>>>{"a":10,"b":20}
{'a': 10, 'b': 20}
>>>a=_
{'a': 10, 'b': 20}
>>>a["a"]
10
>>>a["b"]
20

>>>l = [i for i in range(10)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>l.Collect({x as int | x%2==0})
[0, 2, 4, 6, 8]
//これはPythonでいう
/*
>>> [i for i in range(10) if i%2==0]
[0, 2, 4, 6, 8]
な、はず。
*/

##結論##
PythonとBooは似た兄弟のようです。