万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

Boo Language Advent Calendar 2012 25日目 Title:「booishをインストール」

URL: http://atnd.org/events/34622

今日はクリスマス 兼 Advent Calendar最終日。しかし多忙なのであまり濃い情報は載せられないかも?

Booにはインタラクティブインタプリタとしてbooishがあります。
BOO - Interactive Interpreter
このサイトを見たが、特にインストールをMacOS Xにする方法なさそう。
srcにどうたらこうたら言ってますが、
一度ここからダウンロードしてみたがよくわからない
URL: http://dist.codehaus.org/boo/distributions/?C=M;O=D

SharpDevelopを使うような気がするのでWindowsではないので却下。


githubをみた。
https://github.com/ceykooo/homebrew-boo

「How do I install these formulae?
Just brew tap ceykooo/homebrew-boo and then brew install .」
の意味がわからなかった。

公式のインストール方法?

brew install https://raw.github.com/ceykooo/homebrew-boo/master/<formula>.rb

これの意味がわからんかったが、をbooに置き換えた

つまり、コレをした。

brew tap ceykooo/homebrew-boo
https://raw.github.com/ceykooo/homebrew-boo/master/boo.rb

コンパイルにやけに時間が掛かる。
10分くらい待ったかも?

zshに怒られたが、booコマンドで実行できた

> boo
zsh: correct 'boo' to 'booi' [nyae]? n
boo command line utility 0.9.4.9

Cannot load history from '/Users/sugita/.local/share/booish_history'
The following builtin functions are available :
    /? or /h or /help : display this help
    dir(type) : returns the members of a type
    describe(type) : describe a type as boo code
    globals() or /g : returns names of all variables known to interpreter
    load(file) or /l file : evals an external boo file
    save(file) or /s file : writes your current booish session into file
    quit() or /q : exits the interpreter
>>>def doit(p):
...    print p.ToUpper()
...    
>>>doit("a string")
A STRING

おまけ

最近、いまさらですがリーダブルコード↑を読むときに思い出しました。
Pythonでは関数を呼ぶときに引数に任意の引数名を入れて渡すことによって、
呼びだすことができる。
これのお陰でどの引数が何番目かを忘れてても呼びだすことができるのだ!

・arg_test.py

def Hoge(arg0, arg1):
    print (arg0)
    print (arg1)

Hoge(arg1=1, arg0=0)

↓結果

0
1

このようにarg1が先に来てても結果が正しい。


じゃあこの機能はBooにもあるかドキュメント探すより実行したほうが速いのでやってみた。
・ArgTest.boo

import UnityEngine


class ArgTest (MonoBehaviour):

    def Start():
        Hoge(arg1=1, arg0=0)

    def Hoge(arg0 as int, arg1 as int):
        Debug.Log(arg0)
        Debug.Log(arg1)

↓結果

1
0

って・・・・。これはエラーこそならんかったけど、
単に「arg=1」と代入して渡しているだけだった。
やっぱりBooはデフォルト引数がないし、Pythonのいいところをすべて
受け継いでいない。