Home > android > アンドロイドでもλかわいいよλ

アンドロイドでもλかわいいよλ

λかわいいよλ

はてな界隈では関数型言語が大人気。

ギーク姉さんや、

Schemeスキスキスー!
・ギークへの最短距離はScheme
→ SHIROさんという方がナイスギーク(らしい
→ λかわいいよλ(オライリー本を横にするとλが見える
→ 特技はスキームです。というとギーク全体に大ダメージ(脳内解釈
→ 「Schemeスキー!」と叫ぶとdanちゃんも飛んでくる(かもしれない

元イイ嫁とか、

[日記]ざんねん。
ErlangをDLしようとしたけど重いのでやめた。30分もかかるようだ。

ミラーも落ちてる。

はあー。。。とりあえず、これでもおいておきますね。

サイボウズ・ラボの人達まで。

わーい \(^o^)/ Scheme もどきを JS で書いたよー! by id:amachang
PythonでSchemeを作りました by id:nishiohirokazu
Scheme VM を書く by id:higepon

特にschemeは大人気。
1000speakersでも「λかわいいよλ」って発表されるぐらいに大人気。

λはじまったな。。。

アンドロイドもかわいいよ

ということで、Android OS上でもラムダラムダして〜w

TinyScheme

Schemeの処理系の代表はGaucheでしょうか。
でも、大人の事情によりここではTinySchemeをAndroid上で動くようにコンパイル。
今回はScratchboxを構築してクロスコンパイルしてみました。

まずmakefileにちょっと小細工を入れておく。

$ diff makefile makefile.orig
42,44d41
< # Android
< PLATFORM_FEATURES =
< STATIC_FLAG = -static
72c69
< $(CC) -o $@ $(STATIC_FLAG) $(DEBUG) $(OBJS) $(SYS_LIBS)
---
> $(CC) -o $@ $(DEBUG) $(OBJS) $(SYS_LIBS)

あとはmakeするだけ。

$ make

するとschemeというバイナリができあがる。これが処理系。

$ file scheme
scheme: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.6.14, statically linked, not stripped

ちゃんとstatically linkedになってます。

Androidでラムダ

コンパイルしたschemeをAndroidに持っていく。

まずはAndroid OSの起動。

$ emulator

schemeを移動。

$ adb push scheme /tmp

Androidにログイン。

$ adb shell

Androidでschemeを実行。

# cd /tmp
# chmod 755 scheme
# ./scheme
> (define (puts str)
(display str)
(display “\n”) )
puts
> (puts “Lambda, you are pretty, Lambda!”)
Lambda, your are pretty, Lambda!
#t

ほら、アンドロイドでもλかわいいよλ!

おわりに

アンドロイドもλの仲間入りに成功しました。
どう見てもナンチャッテです、本当にどうもありがとうございました。

むしろ

MLが注目されるならOCamlももっと注目されて良いと思う。

ラクダかわいいよラクダ。

Gausheをとりあえずコンパイルして、依存関係を見る。

$ ldd gosh
libgauche.so.0 => /home/adamrocker/tmp/Gauche-0.8.13/src/libgauche.so.0 (0×0023b000)
libdl.so.2 => /lib/libdl.so.2 (0×00c9a000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0×0347f000)
libutil.so.1 => /lib/libutil.so.1 (0×00564000)
libm.so.6 => /lib/libm.so.6 (0×00c71000)
libpthread.so.0 => /lib/libpthread.so.0 (0×00ca0000)
libc.so.6 => /lib/libc.so.6 (0×00b2f000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0×03384000)
/lib/ld-linux.so.2 (0×00160000)

あっ。pthred。
たしか…

$ adb shell
# cd /system/lib
# ls libpthread.so
libpthread.so: No such file or directory

ないっすね…。これは面倒な事になりそうなので今回は華麗にスルー。

関連のありそうなエントリ

Comments:2

安藤恐竜 08-03-06 (木) 10:07

AndroidはuClibcなのでpthreadは端からなくてlibthread_dbですねー。

adamrocker 08-03-06 (木) 11:27

おぉ!知らなかった。
というかuClibcという単語を始めて知りました(汗
となるとスレッド形は単純なクロスコンパイルだけでは上手く移植できそうにないですね。

Comment Form
Remember personal info

*
To prove that you're not a bot, enter this code
Anti-Spam Image

Trackbacks:0

Trackback URL for this entry
http://www.adamrocker.com/blog/194/lambda_on_android.html/trackback/
Listed below are links to weblogs that reference
アンドロイドでもλかわいいよλ from throw Life

Home > android > アンドロイドでもλかわいいよλ

Search
Feeds
Meta

Return to page top