#pragma section-numbers off [[TableOfContents]] = 概要 = 関数型プログラミング言語。インデントが意味を持ちます。 = サイト = http://www.haskell.org/ = 学習サイト = [http://halogen.note.amherst.edu/~jdtang/scheme_in_48/tutorial/overview.html Write Yourself a Scheme in 48 hours]:A Haskell Tutorial [http://cheatsheet.codeslower.com/ The Haskell Cheatsheet] [http://book.realworldhaskell.org/read/ Real World Haskell] = Emacs = http://projects.haskell.org/haskellmode-emacs/ http://github.com/kazu-yamamoto/ghc-mod = 関連サイト = [http://www.sampou.org/cgi-bin/haskell.cgi Haskell(sampou.org)]:日本語解説サイト [http://web.yl.is.s.u-tokyo.ac.jp/~ganat/memo/aboutHaskell.html About Haskell(日本語訳)]:[http://www.haskell.org/aboutHaskell.html About Haskell]の翻訳 [http://www.sampou.org/haskell/tutorial-j/ A Gentle Introduction to Haskell, Version 98] [http://www.teu.ac.jp/kougi/koshida/Prog6/text01.html プログラム工学VI 講義資料(2002-9-25) Haskell 入門] [http://www.nslabs.jp/haskell.rhtml Haskellで遊ぶ] [http://d.hatena.ne.jp/m-hiyama/20060419/1145432492 檜山正幸のキマイラ飼育記 - 世界で一番か二番くらいにやさしい「モナド入門」] = インストール = 実装としてはいくつかありますがここでは ghc をインストールします。 [http://www.haskell.org/ghc/ The Glasgow Haskell Compiler] ライセンスはBSDL。ghcというコンパイラとghciというインタプリタ両方があります。わたしはこちらを利用しています。 バイナリは [http://www.haskell.org/ghc/download_ghc_6_12_1.html#macosxintel GHC: Download version 6.12.1] から取得できます。 [http://hackage.haskell.org/trac/ghc/wiki/X86OSXGhc X86OSXGhc - GHC - Trac] GHC はまだ 64bit に対応していないため、32bit フラグを明確に付与しておいた方が良いです。 {{{/usr/bin/ghc}}}を編集した方が良いでしょう。 {{{ #!/bin/sh exedir="/Library/Frameworks/GHC.framework/Versions/612/usr/lib/ghc-6.12.1" exeprog="ghc-stage2" executablename="$exedir/$exeprog" datadir="/Library/Frameworks/GHC.framework/Versions/612/usr/share" bindir="/Library/Frameworks/GHC.framework/Versions/612/usr/bin" topdir="/Library/Frameworks/GHC.framework/Versions/612/usr/lib/ghc-6.12.1" executablename="$exedir/ghc" exec "$executablename" -B"$topdir" ${1+"$@"} }}} を以下に修正します。 {{{ #!/bin/sh exedir="/Library/Frameworks/GHC.framework/Versions/612/usr/lib/ghc-6.12.1" exeprog="ghc-stage2" executablename="$exedir/$exeprog" datadir="/Library/Frameworks/GHC.framework/Versions/612/usr/share" bindir="/Library/Frameworks/GHC.framework/Versions/612/usr/bin" topdir="/Library/Frameworks/GHC.framework/Versions/612/usr/lib/ghc-6.12.1" executablename="$exedir/ghc" exec "$executablename" -optl-arch\ i386 -optc-m32 -opta-m32 -optl-m32 -B"$topdir" ${1+"$@"} }}} = cabal-install = [http://hackage.haskell.org/package/cabal-install HackageDB: cabal-install-0.8.0] {{{ curl -O http://hackage.haskell.org/packages/archive/mtl/1.1.0.2/mtl-1.1.0.2.tar.gz tar xvfz mtl-1.1.0.2.tar.gz cd mtl-1.1.0.2 runhaskell Setup.hs configure -p --ld-options="-arch i386" --gcc-option=-m32 --user runhaskell Setup.hs build runhaskell Setup.hs install cd .. curl -O http://hackage.haskell.org/packages/archive/parsec/3.1.0/parsec-3.1.0.tar.gz tar xvfz parsec-3.1.0.tar.gz cd parsec-3.1.0 runhaskell Setup.hs configure -p --ld-options="-arch i386" --gcc-option=-m32 --user runhaskell Setup.hs build runhaskell Setup.hs install cd .. curl -O http://hackage.haskell.org/packages/archive/network/2.2.1.7/network-2.2.1.7.tar.gz runhaskell Setup.hs configure -p --ld-options="-arch i386" --gcc-option=-m32 --user runhaskell Setup.hs build runhaskell Setup.hs install cd .. curl -O http://hackage.haskell.org/packages/archive/HTTP/4000.0.9/HTTP-4000.0.9.tar.gz tar xvfz HTTP-4000.0.9.tar.gz cd HTTP-4000.0.9 runhaskell Setup.lhs configure -p --ld-options="-arch i386" --gcc-option=-m32 --user runhaskell Setup.lhs build runhaskell Setup.lhs install cd .. curl -O http://hackage.haskell.org/packages/archive/zlib/0.5.2.0/zlib-0.5.2.0.tar.gz tar xvfz zlib-0.5.2.0.tar.gz cd cd zlib-0.5.2.0 runhaskell Setup.hs configure -p --ld-options="-arch i386" --gcc-option=-m32 --user runhaskell Setup.hs build runhaskell Setup.hs install cd .. curl -O http://haskell.org/cabal/release/cabal-install-0.8.0/cabal-install-0.8.0.tar.gz tar xvfz cabal-install-0.8.0.tar.gz cd cabal-install-0.8.0 runhaskell Setup.hs configure -p --ld-options="-arch i386" --gcc-option=-m32 --user runhaskell Setup.hs build runhaskell Setup.hs install # cabal のデータベースを更新します ~/.cabal/bin/cabal update }}} = 日本語 = 日本語はEUC-JPであれば通りますが、2文字として数えますし、実際は日本語処理されているわけでないです。 {{{ cabal install -p utf8-string }}} で utf8-string をインストールすれば UTF-8 が利用できるようになります。 = HOC = [http://hoc.sourceforge.net/ HOC: A Haskell to Objective-C Binding] [http://code.google.com/p/hoc/ hoc - Project Hosting on Google Code] GHC 6.10.4 を利用して Mac OS X 10.6 でコンパイルしようとすると[http://hackage.haskell.org/trac/ghc/ticket/3522 #3522 (conflicting Block.h on Snow Leopard) – GHC]のエラーが出る。 直しても [http://hackage.haskell.org/trac/ghc/ticket/3353 #3353 (Add CLDouble support) – GHC] のエラーがでる。 {{{ cabal install parsec-3.0.1 cabal install fgl cabal install HUnit svn co http://hoc.googlecode.com/svn/trunk/hoc }}} Setup.hs 84行目あたりを書き変える {{{ -- customConfig :: (Either GenericPackageDescription PackageDescription, HookedBuildInfo) -> ConfigFlags -> IO LocalBuildInfo customConfig :: (GenericPackageDescription, HookedBuildInfo) -> ConfigFlags -> IO LocalBuildInfo }}} {{{ runhaskell Setup.hs configure -p --ld-options="-arch i386" --gcc-option=-m32 --user }}} = エディタ = http://leksah.org/ http://code.google.com/p/yi-editor/ http://haskell.org/haskellwiki/Yi http://hackage.haskell.org/package/yi http://code.haskell.org/yi/README かならず $HOME/.cabal/bin にパスを通しておく。パスが通ってないと alex が存在しないエラーが出る {{{ cabal install cabal-install cabal update cabal install base-4.2.0.2 cabal install alex cabal install yi }}} 2010-02-11 現在 data-accessor のバージョンがあわないためインストールできないので以下のようにする。ghc-6.10.4 でないと動作しない。 {{{ cabal install yi --constraint="data-accessor < 0.2.1" --constraint="template-haskell < 2.4" }}} ターミナル内では動作する。Cocoa で動作させたい場合は HOC のインストールが必要。 GHC 6.12 で動作させたい場合は以下を参照 http://code.google.com/p/yi-editor/issues/detail?id=307 = 設定 = = 参考書籍 = [http://jaortega.wordpress.com/2006/03/28/a-haskell-bookshelf/ programming musings » Blog Archive » A Haskell bookshelf] [[ASIN(0521644089 The Haskell School of Expression: Learning Functional Programming Through Multimedia)]] [[ASIN(0201342758 Haskell: The Craft of Functional Programming (International Computer Science Series): 洋書)]] [[ASIN(0134843460 Introduction to Functional Programming Using Haskell (Prentice Hall Series in Computer Science): 洋書)]] [[ASIN(4797336021 ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門: 本)]] [[ASIN(4839919623 入門Haskell―はじめて学ぶ関数型言語: 本)]] = 参考サイト = [http://www.wikiroom.com/sakurai/?Haskell%A5%E1%A5%E2 Haskellメモ - sakurai] [http://fxp.hp.infoseek.co.jp/arti/prag/ Pragmatic Haskell] [http://www.hyuki.com/haskell/ Haskell - 結城浩] [http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=Haskell The RWiki - Haskell] [http://fxp.hp.infoseek.co.jp/arti/frag/ Haskell Code Fragment] [http://www.summa.jp/lang/func/haskell.htm Haskell] [http://www.geocities.jp/shido_takafumi/hs/index_hs.html Haskell のお勉強] [http://sourceforge.net/projects/jaskell/ SourceForge.net: jaskell] [http://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/haskell_io.html Haskellの入出力] [http://www.shido.info/hs/index.html Haskell のお勉強] [http://jjinux.blogspot.com/2006/06/haskell-microsoft-haskell-pdf.html JJinuxLand: Haskell: Microsoft Haskell PDF] [http://d.hatena.ne.jp/w_o/20061008#p1 J C++ for Haskeller]:すっごい大変そう ---- CategoryProgramLanguage