haskell

haskellで計算以外のことをしようと思ったとき

mapMとmapM_の違いにはまる。 Prelude> mapM :: (Monad m) => (a -> m b) -> [a] -> m [b] Prelude> mapM_ :: (Monad m) => (a -> m b) -> [a] -> m ()

Real World Haskell(3)[Exercise4-2]

foldlを使ってanyを定義すると.... import Data.List (foldl', groupBy) import Data.Char (digitToInt, isDigit, intToDigit, isSpace) import GHC.Base (maxInt) import Data.Either ---Exercise 4.2.1 asInt_fold :: String -> Int asInt_fold = foldl' h…

Real World Haskell(2)[exercise4]

import Maybe (catMaybes) ---Exercise 4.1 safeHead :: [a] -> Maybe a safeTail :: [a] -> Maybe [a] safeLast :: [a] -> Maybe a safeInit :: [a] -> Maybe [a] safeFunc f [] = Nothing safeFunc f xs = Just $ f xs safeHead = safeFunc head safeTail …

real world haskell(1)[Exercise3]

real world haskellを買ったので読んでいる。exercise3をやってみた。grahum-scanはもう少しきれいに書けそうな気がする。 import Data.List -- http://book.realworldhaskell.org/read/defining-types-streamlining-functions.html ---Exercise 3.1 length1…

haskell補完3(静的な補完がしたい)

静的な補完もしたい。(リファレンスなどを調べるのに、静的な補完の方が便利)。 実行後は以下のようなファイルが生成される。(ArrayにはAraryモジュールの情報が格納されている) . |-- modules | |-- Array | |-- Bits | |-- CError | |-- CForeign | |-- C…

emacs,haskell補完2

前回の続き。ghci上でタブを入力することで現れる候補を利用して補完。 でも、エラーもまるごと読み取って捨てているという強引なことをしているので適切な方法とは言えないような気もする。とりあえず、利用することはできるのでまぁいいや。 code (require…

ghciと通信して補完をする(かなり強引)

とりあえず目処は立った。 でも、他の人に進めようとする気にはなれないな。*1 (defmacro toggle! (name) `(progn (setq ,name (not ,name)) (message (format "%s:%s" ,(symbol-name name) ,name)))) (require 'inf-haskell) (defun haskell-send-string (s…

haskellで遊んでみた。

install sudo aptitude install ghc6-doc haskell-mode とりあえず、何か動かしてみる。 /usr/share/doc/ghc6-doc/index.htmlの中を見てみる。 Data.Listというもの発見*1 おおよそ、見当がついたの気がしたので使ってみる。 import Data.List l = take 5 [1…