Haskell

Unlambdaを実装しよう

Haskellの勉強も、なにか実用的なものを作りながらの方がいいと思ったのでUnlambdaの処理系を作ることにしました。OCamlの実装が104行のすごくわかりやすいコードだったのでこれを移植しようかな。とりあえずできたところまで(evalがまだ) {-# OPTIONS_GHC -…

モナド

http://d.hatena.ne.jp/cho45/20071106#1194290422 勉強する。モナドはJavaでいうところのデザインパターンの一種かな??

returnはリターンしない

他の言語のノリで使うと間違えるreturn。 構文じゃなくて単なるモナドで包む関数なので、関数の途中でreturnしてもその時点で関数を抜けたりしないし、(return a)と(return b)を引数にして計算したり他の関数を呼び出したりもできる。もしかして と思ってx

国内予選問題A ふたたび

らしいコード(って?) - HaHaHa! - haskell http://haskell.g.hatena.ne.jp/nobsun/20071109/p1 を参考にして書き直してみました。 import System.IO main :: IO () main = putStr . unlines . map show . get_num_vote . map read . lines =<< readFile "c:…

型宣言

nobsunさんに型宣言を書くといいと教えてもらったのでさっそくやってみました。Floatをreturnする関数はIO Floatなのか。。。エラーメッセージが Couldn't match expected type `m Int' against inferred type `Int' In the second argument of `(/)', namel…

国内予選問題A

DPとか使うのかな?と思ったらnobsunさんのはアジア予選でわたしのは国内予選だった。 まだまだ道のりは長い。http://www.logos.ic.i.u-tokyo.ac.jp/icpc2007/jp/domestic/problems/A_ja.htmlうまく動かないよ。。。 import System.IO main = do { ;ih <- op…

ファイルから読み込み -- できた!

できた! import System.IO main = do { ;ih <- openFile "c:\\tmp.txt" ReadMode ;oh <- return stdout ;nakami ih oh } nakami ih oh = do{ ;n <- return . (1 +) . read =<< hGetLine ih ;if n == 1 then return () else hPutStrLn oh (show n) >> (nakam…

ファイルから読み込み---また失敗

import System.IO main = do { ;ih <- openFile "c:\\tmp.txt" ReadMode ;oh <- return stdout ;n <- return . (1 +) . read =<< hGetLine ih ;if n == 1 then return () else hPutStrLn oh (show n) >> main }なぜか無限ループになっちゃった。。。 最初の1…

文字列を整数に変換

nobsunさんにトラックバックを頂きました!なるほど、、、今まで他の言語のノリで「文字列を整数に変換する方法」と思って探していましたけど、Haskellでは返すべき型によってどの関数を使えばいいかふりわけることができるわけですね。えっと、なにがいいた…

むずかしい

HaskellでICPCのAの問題を解いてみようと思ったのだけど、ファイルから読み込んだり、行単位のリストにしたり、文字列を整数にしたりする方法すらわからなくて挫折。。。 file = readFile "c:\\tmp.txt" foo file = do x <- file putStr $ show $ read x :: …