組込haskellとλカ娘本の紹介

11
組込Haskellとλカ娘本の紹介 組込Haskellとλカ娘本の紹介 組込Haskellとλカ娘本の紹介 組込Haskellとλカ娘本の紹介 組込Haskellとλカ娘本の紹介 Kiwamu Okabe Kiwamu Okabe Kiwamu Okabe Kiwamu Okabe Kiwamu Okabe

Upload: kiwamu-okabe

Post on 15-Jan-2015

1.059 views

Category:

Documents


7 download

DESCRIPTION

組込Haskellとλカ娘本の紹介

TRANSCRIPT

組込Haskellとλカ娘本の紹介組込Haskellとλカ娘本の紹介組込Haskellとλカ娘本の紹介組込Haskellとλカ娘本の紹介組込Haskellとλカ娘本の紹介

Kiwamu OkabeKiwamu OkabeKiwamu OkabeKiwamu OkabeKiwamu Okabe

私は誰?私は誰?私は誰?私は誰?私は誰?

☆ Twitter: @master_q☆ Twitter: @master_q☆ Twitter: @master_q☆ Twitter: @master_q☆ Twitter: @master_q

☆ Metasepiプロジェクト主催☆ Metasepiプロジェクト主催☆ Metasepiプロジェクト主催☆ Metasepiプロジェクト主催☆ Metasepiプロジェクト主催

☆ Ajhc Haskellコンパイラ開発者☆ Ajhc Haskellコンパイラ開発者☆ Ajhc Haskellコンパイラ開発者☆ Ajhc Haskellコンパイラ開発者☆ Ajhc Haskellコンパイラ開発者

☆ Debian Maintainer☆ Debian Maintainer☆ Debian Maintainer☆ Debian Maintainer☆ Debian Maintainer

☆ 前はデジタルサイネージの開発してました☆ 前はデジタルサイネージの開発してました☆ 前はデジタルサイネージの開発してました☆ 前はデジタルサイネージの開発してました☆ 前はデジタルサイネージの開発してました

☆ その昔はNetBSDでコピー機作ってた☆ その昔はNetBSDでコピー機作ってた☆ その昔はNetBSDでコピー機作ってた☆ その昔はNetBSDでコピー機作ってた☆ その昔はNetBSDでコピー機作ってた

名古屋といえば...関数型!名古屋といえば...関数型!名古屋といえば...関数型!名古屋といえば...関数型!名古屋といえば...関数型!

☆ 組込でも関数型しませんか?☆ 組込でも関数型しませんか?☆ 組込でも関数型しませんか?☆ 組込でも関数型しませんか?☆ 組込でも関数型しませんか?

☆ しましょう!☆ しましょう!☆ しましょう!☆ しましょう!☆ しましょう!

☆ Haskellなんてイカが?☆ Haskellなんてイカが?☆ Haskellなんてイカが?☆ Haskellなんてイカが?☆ Haskellなんてイカが?

組込Haskell? オイシイの?組込Haskell? オイシイの?組込Haskell? オイシイの?組込Haskell? オイシイの?組込Haskell? オイシイの?

☆ OSにも強い型をつけたい!☆ OSにも強い型をつけたい!☆ OSにも強い型をつけたい!☆ OSにも強い型をつけたい!☆ OSにも強い型をつけたい!

☆ Ajhc http://ajhc.metasepi.org/☆ Ajhc http://ajhc.metasepi.org/☆ Ajhc http://ajhc.metasepi.org/☆ Ajhc http://ajhc.metasepi.org/☆ Ajhc http://ajhc.metasepi.org/

☆ ランタイムエラーを少なくできるのでは?☆ ランタイムエラーを少なくできるのでは?☆ ランタイムエラーを少なくできるのでは?☆ ランタイムエラーを少なくできるのでは?☆ ランタイムエラーを少なくできるのでは?

AjhcはGHCと何が違うの?AjhcはGHCと何が違うの?AjhcはGHCと何が違うの?AjhcはGHCと何が違うの?AjhcはGHCと何が違うの?

☆ Ajhcは Haskell→C言語 への変換器☆ Ajhcは Haskell→C言語 への変換器☆ Ajhcは Haskell→C言語 への変換器☆ Ajhcは Haskell→C言語 への変換器☆ Ajhcは Haskell→C言語への変換器

☆ バイナリサイズ小さく、POSIX依存少ない☆ バイナリサイズ小さく、POSIX依存少ない☆ バイナリサイズ小さく、POSIX依存少ない☆ バイナリサイズ小さく、POSIX依存少ない☆ バイナリサイズ小さく、POSIX依存少ない

応用例: POSIX API応用例: POSIX API応用例: POSIX API応用例: POSIX API応用例: POSIX API

☆ スレッドセーフ/再入可能/パラレルGC☆ スレッドセーフ/再入可能/パラレルGC☆ スレッドセーフ/再入可能/パラレルGC☆ スレッドセーフ/再入可能/パラレルGC☆ スレッドセーフ/再入可能/パラレルGC

☆ pthreadを使ったスレッドが使えます☆ pthreadを使ったスレッドが使えます☆ pthreadを使ったスレッドが使えます☆ pthreadを使ったスレッドが使えます☆ pthreadを使ったスレッドが使えます

☆ でも対応ライブラリは少ない...☆ でも対応ライブラリは少ない...☆ でも対応ライブラリは少ない...☆ でも対応ライブラリは少ない...☆ でも対応ライブラリは少ない...$ ls ~/.cabal/share/ajhc-0.8.0.8/libDiff-0.2.0.hl haskell98-1.0.hlHUnit-1.2.5.1.hl html-1.0.1.2.hlQuickCheck-1.2.0.1.hl jhc-1.0.hlapplicative-1.0.hl jhc-prim-1.0.hlcontainers-0.3.0.0.hl parsec-2.1.0.1.hldeepseq-1.2.0.1.hl pretty-1.0.1.2.hlfilepath-1.3.0.1.hl safe-0.3.3.hlflat-foreign-1.0.hl smallcheck-0.6.1.hlhaskell-extras-0.8.1.hl transformers-0.2.1.0.hlhaskell2010-0.8.1.hl xhtml-3000.2.1.hl

$ ls ~/.cabal/share/ajhc-0.8.0.8/libDiff-0.2.0.hl haskell98-1.0.hlHUnit-1.2.5.1.hl html-1.0.1.2.hlQuickCheck-1.2.0.1.hl jhc-1.0.hlapplicative-1.0.hl jhc-prim-1.0.hlcontainers-0.3.0.0.hl parsec-2.1.0.1.hldeepseq-1.2.0.1.hl pretty-1.0.1.2.hlfilepath-1.3.0.1.hl safe-0.3.3.hlflat-foreign-1.0.hl smallcheck-0.6.1.hlhaskell-extras-0.8.1.hl transformers-0.2.1.0.hlhaskell2010-0.8.1.hl xhtml-3000.2.1.hl

$ ls ~/.cabal/share/ajhc-0.8.0.8/libDiff-0.2.0.hl haskell98-1.0.hlHUnit-1.2.5.1.hl html-1.0.1.2.hlQuickCheck-1.2.0.1.hl jhc-1.0.hlapplicative-1.0.hl jhc-prim-1.0.hlcontainers-0.3.0.0.hl parsec-2.1.0.1.hldeepseq-1.2.0.1.hl pretty-1.0.1.2.hlfilepath-1.3.0.1.hl safe-0.3.3.hlflat-foreign-1.0.hl smallcheck-0.6.1.hlhaskell-extras-0.8.1.hl transformers-0.2.1.0.hlhaskell2010-0.8.1.hl xhtml-3000.2.1.hl

$ ls ~/.cabal/share/ajhc-0.8.0.8/libDiff-0.2.0.hl haskell98-1.0.hlHUnit-1.2.5.1.hl html-1.0.1.2.hlQuickCheck-1.2.0.1.hl jhc-1.0.hlapplicative-1.0.hl jhc-prim-1.0.hlcontainers-0.3.0.0.hl parsec-2.1.0.1.hldeepseq-1.2.0.1.hl pretty-1.0.1.2.hlfilepath-1.3.0.1.hl safe-0.3.3.hlflat-foreign-1.0.hl smallcheck-0.6.1.hlhaskell-extras-0.8.1.hl transformers-0.2.1.0.hlhaskell2010-0.8.1.hl xhtml-3000.2.1.hl

$ ls ~/.cabal/share/ajhc-0.8.0.8/libDiff-0.2.0.hl haskell98-1.0.hlHUnit-1.2.5.1.hl html-1.0.1.2.hlQuickCheck-1.2.0.1.hl jhc-1.0.hlapplicative-1.0.hl jhc-prim-1.0.hlcontainers-0.3.0.0.hl parsec-2.1.0.1.hldeepseq-1.2.0.1.hl pretty-1.0.1.2.hlfilepath-1.3.0.1.hl safe-0.3.3.hlflat-foreign-1.0.hl smallcheck-0.6.1.hlhaskell-extras-0.8.1.hl transformers-0.2.1.0.hlhaskell2010-0.8.1.hl xhtml-3000.2.1.hl

応用例: mbedマイコン (ARM)応用例: mbedマイコン (ARM)応用例: mbedマイコン (ARM)応用例: mbedマイコン (ARM)応用例: mbedマイコン (ARM)https://github.com/ajhc/demo-cortex-m3https://github.com/ajhc/demo-cortex-m3https://github.com/ajhc/demo-cortex-m3https://github.com/ajhc/demo-cortex-m3https://github.com/ajhc/demo-cortex-m3

☆ mbed NXP LPC1768 (RAM 32kB)☆ mbed NXP LPC1768 (RAM 32kB)☆ mbed NXP LPC1768 (RAM 32kB)☆ mbed NXP LPC1768 (RAM 32kB)☆ mbed NXP LPC1768 (RAM 32kB)

☆ 他にもCortex-Mシリーズマイコンに対応☆ 他にもCortex-Mシリーズマイコンに対応☆ 他にもCortex-Mシリーズマイコンに対応☆ 他にもCortex-Mシリーズマイコンに対応☆ 他にもCortex-Mシリーズマイコンに対応

☆ OSなしで動作可能☆ OSなしで動作可能☆ OSなしで動作可能☆ OSなしで動作可能☆ OSなしで動作可能

☆ 割り込みハンドラもHaskellで☆ 割り込みハンドラもHaskellで☆ 割り込みハンドラもHaskellで☆ 割り込みハンドラもHaskellで☆ 割り込みハンドラもHaskellで

応用例: 非POSIXなOS上でのアプリ応用例: 非POSIXなOS上でのアプリ応用例: 非POSIXなOS上でのアプリ応用例: 非POSIXなOS上でのアプリ応用例: 非POSIXなOS上でのアプリhttps://github.com/metasepi/chibios-arafurahttps://github.com/metasepi/chibios-arafurahttps://github.com/metasepi/chibios-arafurahttps://github.com/metasepi/chibios-arafurahttps://github.com/metasepi/chibios-arafura

☆ ChibiOS/RTに対応☆ ChibiOS/RTに対応☆ ChibiOS/RTに対応☆ ChibiOS/RTに対応☆ ChibiOS/RTに対応

☆ FreeRTOSやμITRONでも (要やる気)☆ FreeRTOSやμITRONでも (要やる気)☆ FreeRTOSやμITRONでも (要やる気)☆ FreeRTOSやμITRONでも (要やる気)☆ FreeRTOSやμITRONでも (要やる気)

応用例: Android NDK応用例: Android NDK応用例: Android NDK応用例: Android NDK応用例: Android NDKhttps://github.com/ajhc/demo-android-ndkhttps://github.com/ajhc/demo-android-ndkhttps://github.com/ajhc/demo-android-ndkhttps://github.com/ajhc/demo-android-ndkhttps://github.com/ajhc/demo-android-ndk

☆ 現在開発中☆ 現在開発中☆ 現在開発中☆ 現在開発中☆ 現在開発中

☆ OpenGL ESでGUIできるとイイネ☆ OpenGL ESでGUIできるとイイネ☆ OpenGL ESでGUIできるとイイネ☆ OpenGL ESでGUIできるとイイネ☆ OpenGL ESでGUIできるとイイネ

☆ pthreadがあるのでスレッド使える☆ pthreadがあるのでスレッド使える☆ pthreadがあるのでスレッド使える☆ pthreadがあるのでスレッド使える☆ pthreadがあるのでスレッド使える

☆ Haskellゲームをマーケットで売りさばこう!☆ Haskellゲームをマーケットで売りさばこう!☆ Haskellゲームをマーケットで売りさばこう!☆ Haskellゲームをマーケットで売りさばこう!☆ Haskellゲームをマーケットで売りさばこう!

まずは使ってみてみて!まずは使ってみてみて!まずは使ってみてみて!まずは使ってみてみて!まずは使ってみてみて!日本語マニュアル: http://ajhc.metasepi.org/manual_ja.html日本語マニュアル: http://ajhc.metasepi.org/manual_ja.html日本語マニュアル: http://ajhc.metasepi.org/manual_ja.html日本語マニュアル: http://ajhc.metasepi.org/manual_ja.html日本語マニュアル: http://ajhc.metasepi.org/manual_ja.html

☆ インストールは簡単☆ インストールは簡単☆ インストールは簡単☆ インストールは簡単☆ インストールは簡単$ sudo apt-get install haskell-platform gcc make m4$ cabal install ajhc$ export PATH=$HOME/.cabal/bin:$PATH

$ sudo apt-get install haskell-platform gcc make m4$ cabal install ajhc$ export PATH=$HOME/.cabal/bin:$PATH

$ sudo apt-get install haskell-platform gcc make m4$ cabal install ajhc$ export PATH=$HOME/.cabal/bin:$PATH

$ sudo apt-get install haskell-platform gcc make m4$ cabal install ajhc$ export PATH=$HOME/.cabal/bin:$PATH

$ sudo apt-get install haskell-platform gcc make m4$ cabal install ajhc$ export PATH=$HOME/.cabal/bin:$PATH

☆ 使い方も簡単☆ 使い方も簡単☆ 使い方も簡単☆ 使い方も簡単☆ 使い方も簡単$ echo 'main = print "hoge"' > Hoge.hs$ ajhc Hoge.hs$ ./hs.out"hoge"

$ echo 'main = print "hoge"' > Hoge.hs$ ajhc Hoge.hs$ ./hs.out"hoge"

$ echo 'main = print "hoge"' > Hoge.hs$ ajhc Hoge.hs$ ./hs.out"hoge"

$ echo 'main = print "hoge"' > Hoge.hs$ ajhc Hoge.hs$ ./hs.out"hoge"

$ echo 'main = print "hoge"' > Hoge.hs$ ajhc Hoge.hs$ ./hs.out"hoge"

☆ C言語吐き出させてみよう☆ C言語吐き出させてみよう☆ C言語吐き出させてみよう☆ C言語吐き出させてみよう☆ C言語吐き出させてみよう$ ajhc -C -o Hoge.c Hoge.hs$ file Hoge.cHoge.c: C source, ASCII text, with very long lines

$ ajhc -C -o Hoge.c Hoge.hs$ file Hoge.cHoge.c: C source, ASCII text, with very long lines

$ ajhc -C -o Hoge.c Hoge.hs$ file Hoge.cHoge.c: C source, ASCII text, with very long lines

$ ajhc -C -o Hoge.c Hoge.hs$ file Hoge.cHoge.c: C source, ASCII text, with very long lines

$ ajhc -C -o Hoge.c Hoge.hs$ file Hoge.cHoge.c: C source, ASCII text, with very long lines

「簡約!?λカ娘 Go!」に記事書いたよ「簡約!?λカ娘 Go!」に記事書いたよ「簡約!?λカ娘 Go!」に記事書いたよ「簡約!?λカ娘 Go!」に記事書いたよ「簡約!?λカ娘 Go!」に記事書いたよ

http://www.paraiso-lang.org/ikmsm/http://www.paraiso-lang.org/ikmsm/http://www.paraiso-lang.org/ikmsm/http://www.paraiso-lang.org/ikmsm/http://www.paraiso-lang.org/ikmsm/

☆ Lensライブラリの解説☆ Lensライブラリの解説☆ Lensライブラリの解説☆ Lensライブラリの解説☆ Lensライブラリの解説

☆ パーサの解説☆ パーサの解説☆ パーサの解説☆ パーサの解説☆ パーサの解説

☆ 圏論とモナド☆ 圏論とモナド☆ 圏論とモナド☆ 圏論とモナド☆ 圏論とモナド

☆ 囲碁AI☆ 囲碁AI☆ 囲碁AI☆ 囲碁AI☆ 囲碁AI

☆ Ajhcコンパイラの開発秘話 <= コレ書いた☆ Ajhcコンパイラの開発秘話 <= コレ書いた☆ Ajhcコンパイラの開発秘話 <= コレ書いた☆ Ajhcコンパイラの開発秘話 <= コレ書いた☆ Ajhcコンパイラの開発秘話 <= コレ書いた

ちょっとだけ中身のご紹介!ちょっとだけ中身のご紹介!ちょっとだけ中身のご紹介!ちょっとだけ中身のご紹介!ちょっとだけ中身のご紹介!