haskell
mapMとmapM_の違いにはまる。 Prelude> mapM :: (Monad m) => (a -> m b) -> [a] -> m [b] Prelude> mapM_ :: (Monad m) => (a -> m b) -> [a] -> m ()
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…
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を買ったので読んでいる。exercise3をやってみた。grahum-scanはもう少しきれいに書けそうな気がする。 import Data.List -- http://book.realworldhaskell.org/read/defining-types-streamlining-functions.html ---Exercise 3.1 length1…
静的な補完もしたい。(リファレンスなどを調べるのに、静的な補完の方が便利)。 実行後は以下のようなファイルが生成される。(ArrayにはAraryモジュールの情報が格納されている) . |-- modules | |-- Array | |-- Bits | |-- CError | |-- CForeign | |-- C…
前回の続き。ghci上でタブを入力することで現れる候補を利用して補完。 でも、エラーもまるごと読み取って捨てているという強引なことをしているので適切な方法とは言えないような気もする。とりあえず、利用することはできるのでまぁいいや。 code (require…
とりあえず目処は立った。 でも、他の人に進めようとする気にはなれないな。*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…
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…