Haskell

ガウスの消去法

2chでガウスの消去法をHaskellでどう書くかという話題があったので、書いてみた: module Gauss where type E a = (a, [a]) forward :: Fractional a => [E a] -> [E a] forward [] = [] forward (h@(a, k:kt):t) = h : forward (map f t) where f (a', k':kt…

型推論

プログラミング言語 Scala Wikiの型推論実習(?)を参考に、というかほとんど写経して、Haskellで型推論プログラムを書いてみた。

迷路解析

人材獲得作戦・4 試験問題ほかの試験問題をやってみた。かかった時間は1時間強だと思う。

迷路解析・改良

改良してみた。Pointという正格データ型を作り、Array、Set、Sequenceというデータ型を駆使してみた。けど、時間を測ってみると、それほど替わりはない(どちらにせよ0.005秒とかだけど)。また、Data.Unambライブラリを使ってみたかったので、簡単な並列化、'…

Network.HTTP と Codec.Text.IConv

原因を十分に特定できていないので、どこが問題かはっきりしないが、Network.HTTP や Codec.Text.IConv を使っていたら、次のような問題にぶち当たった。とりあえず、コード: module Friends where import Prelude hiding (print, putStr, putStrLn, getCont…

GHCと日本語・試行錯誤中

GHC(6.10.4)で日本語を気持ちよく使えるために試行錯誤している。まず、次のようにコードの先頭に書くと、ちょっと便利 import Prelude hiding (print, putStr, putStrLn) import System.IO.UTF8 data String' = S' String instance Show String' where show…

EUC-JPエンコードと戦う

webからhtmlデータをとってHaskellで解析しようとしたのだけど、対象のhtmlがEUC-JPエンコードでなかなかうまくいかない。仕方ないので、 wgetを使ったshellスクリプトをHaskellプログラムで吐き出す そのshellスクリプトをコンソールから起動して、ファイル…

doJust

こういう関数も欲しい: module Scrach where doJust :: Maybe (IO a) -> IO () doJust (Just io) = io >> return () doJust Nothing = return ()*Scrach> doJust (Just $ print "doing") "doing" *Scrach> doJust Nothing *Scrach> 僕が出した答えはこのすぐ…

whenJust

以前のエントリで、(つづく)とか書いたけど、続きませんでした。ごめんなさい。さて、つぎのような関数が欲しい: module Scrach where whenJust :: Maybe a -> (a -> IO b) -> IO() whenJust (Just v) io = io v >> return () whenJust Nothing _ = return (…

FizzBuzz

Arrowを使いまくる形に変形しようと思ったんだけど、なんか、非本質的なところであまりに苦労しているので、変形前のFizzBuzz関数: module Main where import Control.Arrow fizzbuzz :: [(Int, String)] -> [Int] -> [String] fizzbuzz = map . step step :…

Control.Arrow (3)

http://d.hatena.ne.jp/mzsms/20091120/1258666488 のつづき。 fizzbuzz関数 (|||)の使いどころが分からなかったので、次のような関数を書いてみた: Prelude> :l FizzBuzz.hs [1 of 1] Compiling FizzBuzz ( FizzBuzz.hs, interpreted ) Ok, modules loaded:…

Control.Arrow (2)

http://d.hatena.ne.jp/mzsms/20091119/1258657366 のつづき。 階乗 このエントリ全体がそうですが、この節はとくに、http://d.hatena.ne.jp/takkan_m/20070905/1189001272 を参考にしました。ここまでの道具立てで、階乗関数が書けるので、階乗関数を書いて…

Control.Arrow

http://www.nicovideo.jp/watch/sm5103132 で、Haskell(というかGHC?)のControl.Arrowに関心を持ったので、すこしいじってみた。 loop その1 まず、理解が難しいloopから。なぜなら、どうもArrowを使うときにはトップダウンで考えないとわけが分からなくなる…