関数型言語 Bodhi(ボーディー)をDebianにインストールする

Bodhiっていう関数型言語を見つけました。
https://github.com/jou4/bodhi

OCamlに似た記法の言語みたいです。
・・・といっても、OCaml書いたことないのですが。


Debianにインストールして動かしてみます。





64bit環境が必須




For only x86_64 now.


とのことなので、64bit版のDebianのインストールから。

http://www.debian.org/CD/netinst/
ここからdebian-6.0.3-amd64-netinst.isoをダウンロードし、
Virtual Boxの仮想OSとしてインストールしました。






gitのインストール



ソースを取得するため、gitをインストールします。


# apt-get install git








bodhiのインストール



適当なフォルダに移動して、ソースを取得。


# cd /usr/local/src/
# git clone git://github.com/jou4/bodhi.git




ソースを取得したフォルダに移動してビルドとインストール


# cd bodhi/
# ./configure
# make
# make install





テストプログラムを実行


# bodhi test/hello.bd
# ./a.out
Hello, world!




動いてくれてるみたいです。






Hello, world



まだインタープリタが実装されていないようなので、
「my.bd」というソースを作成します。

内容は以下のとおり。


def main = print "はじめてのbodhi"




コンパイルはbodhiで実行。


# bodhi my.bd




a.outという名前でバイナリが出力されます。
実行してみると・・・


# ./a.out
はじめてのbodhi









関数の宣言とコメント



関数の宣言はこんな感じだと思います。


def [関数名] [引数] = [処理]




また、

{- この間はコメントになります。 -}





動作確認したサンプルはこんな感じ。


{- 足し算 -}
def plus x y = x + y
{- 引き算 -}
def minus x y = x - y
{- 掛け算 -}
def multi x y = x * y
{- 割り算 -}
def divide x y = x / y

def main =
    let _ = print (plus 20 10) in
    let _ = print (minus 20 10) in
    let _ = print (multi 20 10) in
    let _ = print (divide 20 10) in
    print_string "ok."




コンパイルと実行。

# bodhi my.bd
# ./a.out
30
10
200
2
ok.









再帰



1から引数までの合計値を求める再帰関数はこんな感じ。


{- 1から引数までの合計値を取得する -}
def sum n =
    let rec sum_loop n acc =
        if n <= 0 then acc else sum_loop (n -1 ) (n + acc)
    in sum_loop n 0

def main = print (sum 100)





コンパイルと実行。


# bodhi my.bd
# ./a.out
5050






関連記事

コメント

非公開コメント

プロフィール

Author:symfo
blog形式だと探しにくいので、まとめサイト作成中です。
Symfoware まとめ

PR




検索フォーム

月別アーカイブ