ログ日記

作業ログと日記とメモ

Haskell

配列とかカリー化とか

Haskellで二次元配列はどうするんだろう? 散々悩んで Array Int (Array Int a)は効率悪いしなぁ・・とか考えてたら scat.rb:ERROR 何もInt型にしなくても、配列のインデックスそのものを多次元にすればいいだけのことか・・。 type MyArray = Array Point a…

モナドが難しい・・

はてなみたいに :titleと書いたらタイトルを取ってくるように、という処理の仕方は分かった。 しかし・・パーサの中でtitleを見つけたらネットワーク処理をして・・ってやると戻り値にIOがついてしまう。 どうすればいいか全く分からない・・。ネットワーク…

wiki

http://www.n314.com/Haskell/wiki/ はてな記法のpreを採用してみた。 パーサが何となく分かってきた。まだ何となく・・。 普通の文章をパース中にリストとか表示するために中断する方法がまだ無駄なことやってるかも。 type WikiParser a = GenParser Strin…

パーサの修正メモ

下のソース。 breakStringのところは、ただの文字列をチェックしてるんだからリストにしてどれか一つにマッチしたらエラーにすべきところだった。 明日直そう。

モナドの考え方

メモ HaskellのモナドIO - HaHaHa!(old) - haskell

練習問題の解答

mixiのHaskell Game Magazineコミュより http://d.hatena.ne.jp/rahAloe/20060615

xreaでHaskell

コメントをいただきまして(http://d.hatena.ne.jp/n314/20060917/1158475378#c) 無事xreaでHaskellを動かすことができた。 どうやら完全にスタティックリンクするには -optl-static オプションが要るらしい。 http://www.haskell.org/pipermail/glasgow-ha…

Haskellの基本

emacsはカーソルを合わせるだけで型が表示されるので凄く便利。 . :: (b -> c) -> (a -> b) -> a -> cみたいな。 この辺の基本的なところでよく悩む・・。 main = f 1 >>= print f n = g $ h n f' n = (g . h) n f'' n = g . h -- $ :: (a -> b) -> a -> b g…

Haskellからデータベース接続

apt-get install libghc6-haskelldb-dev関連パッケージがもさもさっとインストールされる。 やたら沢山ある。 使い方はこの辺 HaskellDB 使い方 テーブル定義の作成 まずはテーブル定義ファイルを作成する。 module DBSpec where import Database.HaskellDB.…

ghc の -staticオプション

http://rucila.s43.xrea.com/memo/?date=20060901#p02 これが使えたらxreaでも使えるかもしれないのになぁ。 staticフラグを付けても $ file index.cgi index.cgi: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.0, dynamic…

ParsecでtakeWhile

string :: String -> CharParser st String の配列版が欲しかったので作ってみた takeWhileString :: [String] -> CharParser st String takeWhileString [] = unexpected "takeWhileStrng" takeWhileString (x:xs) = try(string x) <|> takeWhileString xs…

xreaでHaskellが動かなかった原因

./index.cgi: /lib/libc.so.6: version `GLIBC_2.3' not found (required by ./index.cgi)だってさ・・。 DebianのWoodyは2.2だったような気がした(気のせいかも?)ので、Woodyでghc5を入れてコンパイルしようにもエラーが出る。。モジュールの構造がだい…

tailコマンド

haskellでtailコマンド2006-09-14 - 趣味的にっき http://alohakun.blog7.fc2.com/blog-entry-451.html http://alohakun.blog7.fc2.com/blog-entry-450.html ほんと慣れてないと思考停止してしまうなぁ。 今はwiki用のパーサで練習してるところなんだけれど…

文字列置換

文字列置換をどうしようかと思って、Text.RegexのsubRegex関数を使えばいいんじゃないかと思ったけど何故か使えない。 Variable not in scope: `subRegex'と言われる。他の正規表現関数は使えるのに・・バージョンの違いなのかな。 しばらく考えて、正規表現…

PATH_INFOを見てテンプレートを読み込んで表示する

やっと少しだけ分かってきた。 IO a の型は普通の a型 に戻すことは出来ないけれど、do の中ならIOを取ることが出来るのか。 PATH_INFOから templates/ 以下のファイルを読み込むプログラム -- -- pathinfo test -- import System.Environment contentType =…

Windows版Haskellを入れる

なんと拡張子に関連づけされてソースファイルをクリックするだけでghciが起動する。 どうやったら役に立つのかは分からないが・・元々Cygwin+Meadowだしね。 そんで取り敢えずソースをコンパイル出来るかということでMonadiusをコンパイルしてみた。 めっち…

Haskellでの入出力の扱い

http://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/haskell_io.htmlこれはわかりやすい。

HaskellでPATH_INFOの処理

http://i.loveruby.net/ja/stdhaskell/samples/lazylines/CGI.hs.html こちらの関数を使うと動作するんだけど・・これをゼロから作れと言われるとキツいものがあるな。パラメータを得る為の関数をいちいち自分で作らないといけないところが・・。 探せばWeb…

普通のHaskellプログラミング読んだ

Webの情報だけで出来るかなと思ったけどさっぱり意味不明なので例の二冊を買った。 取り敢えずWiki以外の部分は読んだけど、結構分かり易いと思う。 ふつうのHaskellプログラミングにはWebプログラミングが載ってて、入門HaskellにはGUIが載ってるから両方使…