2009-01-01から1年間の記事一覧

超漢字に移植した smbclient のβ版を公開します。

smbclientコマンドとは Windowsのファイル共有に使うSMB/CIFSプロトコルを使って, WindowsサーバーやSambaサーバーと接続する。ftpのように ファイル転送(送受信)や,サーバー上のディレクトリおよび ファイルを操作できる。Windowsパソコンに対してメッ…

モナド則1(左単位元)を満たさない偽リストモナド

import Monad(liftM) data MyList a = My { unMy :: [a] } deriving (Show,Eq) instance Monad MyList where return x = My [x,x] (My xs) >>= k = My $ xs >>= (unMy.k) -- sample f x = My [x,x+1] とすると > return 2 >>= f My {unMy = [2,3,2,3]} > f 2…

モナド則3(結合律)を満たさない偽リストモナド

bind [] _ = [] bind [x] k = k x bind xs@(x:_) k = case k x of [_] -> xs >>= k otherwise -> reverse $ xs >>= k data MyList a = My { unMy :: [a] } deriving (Show,Eq) instance Monad MyList where return x = My [x] (My xs) >>= k = My $ xs `bind…

F-algebra と catamorphism を Haskell で理解する(2)

前回の続き。wikipedia の F-algebra のページ http://en.wikipedia.org/wiki/F-algebra 参照。上記ページに F(X) = 1 + X という関手の F-algebra の例で (N,[zero,succ]) が出てくる。Haskell で書くと type N = Int a :: Maybe N -> N a Nothing = 0 a (J…

F-algebra と catamorphism を Haskell で理解する

wikipedia の F-algebra のページ http://en.wikipedia.org/wiki/F-algebra 参照。 上記ページに集合圏から集合圏への関手F として F(X) = 1 + X という例がでてくるが 1 + X は Haskell では Maybe X である。 Maybe の定義 data Maybe a = Nothing | Just …

数独ソルバ

Haskell で数独ソルバを書いてみた。 特徴は ・明示的な再帰は使わず (iterate ...) !! 81 を使った。(81手目に解が求まる) ・探索中のマス目状態を、未確定部分と仮確定部分に分けて持つ。 import List (partition,delete) mark (pos@(i,j),d) cand = (…

List化関手同士の自然変換

・自然変換 Listのreverse リストの反転は自然変換になっているという初等的でありがたい例。 応用として、cdrとかもいいんじゃないかと発言したけど、空リストの扱いが困るから微妙。でも同じ感じで結構考えられそう。 http://d.hatena.ne.jp/oto-oto-oto/2…

公平に配る

Haskell で。Maybe 大好き。 import List import Maybe deal n xs = map catMaybes $ transpose $ init $ takeWhile (not.null) $ map (take n) $ iterate (drop n) $ replicate n Nothing ++ map Just xs ++ [Nothing]

はてな日記開始

今日からゆるーく書き始めてみる。