- 追加された行はこの色です。
- 削除された行はこの色です。
[[ネタ記録庫/Haskell]]
#contents
* totally insane? 純粋関数的に1パスで木の全てのノードを最小値に書き換える [#m8ae406f]
http://obfuscatedcode.wordpress.com/2008/02/16/functional-pearl-trees/
data Tree a = Leaf a -- The leaf holds data of any type.
| Branch (Tree a) (Tree a) deriving (Show)
replaceMin :: Tree Int -> Tree Int
replaceMin t = let (t', m) = rpMin (t, m) in t'
rpMin :: (Tree Int, Int) -> (Tree Int, Int)
rpMin (Leaf a, m) = (Leaf m, a)
rpMin (Branch l r, m) = let (l', ml) = rpMin (l, m)
(r', mr) = rpMin (r, m)
in (Branch l' r', ml `min` mr)
** OCaml版 [#t523287d]
open Lazy
let ( !$ ) = force
type 'a tree = Leaf of 'a | Branch of 'a tree * 'a tree
let rec rp_min = function
| Leaf a, m -> Leaf m, a
| Branch (l,r), m ->
let l', ml = rp_min (l, m) in
let r', mr = rp_min (r, m) in
Branch (l', r'), lazy (min !$ml !$mr)
let replace_min t =
let rec t'_m _ = rp_min (t, lazy !$(snd (t'_m ()))) in
fst (t'_m ())
- この場合 t'_m が 2回走るため 実質 2パス
** OCaml版 (変数への代入を使う方法) [#xd5eed1f]
type 'a tree = Leaf of 'a | Branch of 'a tree * 'a tree
let rec map f = function
| Leaf l -> Leaf (f l)
| Branch (l, r) -> Branch (map f l, map f r)
let replace_min t =
let m = ref 0 in
map (fun a -> m := min !a !m; m) t
- この場合 replace_min : int ref tree -> int ref tree になってしまう…
** OCaml版 その3 (変数への代入と遅延評価を使う方法) [#qbfe1e58]
type 'a tree = Leaf of 'a | Branch of 'a tree * 'a tree;;
let rec rp_min : (int tree * int ref) -> (int tree t * int) = function
| Leaf a, m -> (lazy (Leaf !m)), a
| Branch (l,r), m ->
let l', ml = rp_min (l, m) in
let r', mr= rp_min (r, m) in
lazy (Branch (!$l', !$r')), min ml mr;;
let replace_min t : int tree =
let cell = ref 0 in
let t', m = rp_min (t,cell) in
cell := m; !$t'
- これで replace_min : int tree -> int tree になった! がこれは1パスではないような気も
** OCaml版 その4 (高階関数を使う方法) [#x09966c1]
type 'a tree = Leaf of 'a | Branch of 'a tree * 'a tree
let rec repMin t =
match t with
| Leaf a -> ((fun m -> Leaf m), a)
| Branch (l,r) ->
let (lf, lm) = repMin l in
let (rf, rm) = repMin r in
((fun m -> Branch (lf m,rf m)), min lm rm)
let replace_min t =
let (f,m) = repMin t in
f m
- Haskellの遅延評価をエミュレート?その3の純粋関数型バージョン
** F#版? [#h8daf3df]
#light
type tree<'T> = Leaf of 'T | Branch of tree<'T> * tree<'T>
with override t.ToString() =
match t with
|Leaf v
->sprintf "(Leaf %A)" v
|Branch (lhs,rhs)
-> sprintf "(Branch %s %s)" (lhs.ToString()) (rhs.ToString())
let rec rp_min =
function Leaf a, m -> Leaf m, a
|Branch (l,r), m
-> let l', ml = rp_min (l, m)
let r', mr = rp_min (r, m)
Branch (l', r'), lazy (min (ml.Force()) (mr.Force()))
let replace_min t = let rec t'_m () = rp_min (t, lazy ((snd (t'_m ())).Force()))
fst (t'_m ())
let rec force_nodes =
function Leaf (lv: Lazy<'T>)
-> (Leaf(lv.Force()))
|Branch (lhs,rhs)
-> Branch( (force_nodes lhs), (force_nodes rhs))
let tree_before = Branch(Branch(Leaf(lazy 2), Branch(Leaf(lazy 1), Branch(Leaf(lazy 3), Leaf(lazy 5)))), Leaf(lazy 4))
let tree_after = replace_min( tree_before )
printfn "Before: %O" (force_nodes tree_before)
printfn "After : %O" (force_nodes tree_after)
** 参考 [#t96787d1]
- http://d.hatena.ne.jp/syd_syd/20081122 のコメント欄
* ちょっと似ている話 breadth-first numbering by Chris Okasaki [#iccbd9bf]
- http://okasaki.blogspot.com/2008/07/breadth-first-numbering-algorithm-in.html
- http://www.scribd.com/doc/2913491/BreadthFirst-Numbering
- http://portal.acm.org/citation.cfm?id=351253
* StateT [#x763ddb2]
これは、permutationを返す関数:
permutation' :: [[Int]] -> Int -> [Int] -> [[Int]]
permutation' result 0 _ = result
permutation' result n cand =
do a <- cand
permutation' (map (a:) result) (n-1) [x|x<-cand,x/=a]
使い方
permutation' [[]] [1,2,3] 2
のように使う。
これをStateTを使ってわざと分かりにくくしてみる:
permutation :: [[Int]] -> Int -> StateT [Int] [] [[Int]]
permutation result 0 = return result
permutation result n =
do cand <- get
a <- lift cand
put [x|x<-cand,x/=a]
permutation (map (a:) result) (n-1)
これは
runStateT (permutation [[]] 2) [1,2,3]
のように使う。
- Thx. 勉強になります。 -- [[げんま]] &new{2007-04-24 (火) 12:45:05};
- 使い方は、permutation' [[]] 2 [1,2,3] ではないでしょうか? <-元職業プログラマ -- &new{2008-07-10 (木) 22:46:11};
- <a href="http://forum.indya.com/member.php?u=135243">EMILY 18 PUSSY</a> [url=http://forum.indya.com/member.php?u=135243]EMILY 18 PUSSY[/url] http://forum.indya.com/member.php?u=135243 EMILY 18 PUSSY <a href="http://forum.indya.com/member.php?u=135247">16 18 NUDIST TEENS</a> [url=http://forum.indya.com/member.php?u=135247]16 18 NUDIST TEENS[/url] http://forum.indya.com/member.php?u=135247 16 18 NUDIST TEENS <a href="http://forum.indya.com/member.php?u=135248">POLARKREIS 18 ALLEIN ALLEIN</a> [url=http://forum.indya.com/member.php?u=135248]POLARKREIS 18 ALLEIN ALLEIN[/url] http://forum.indya.com/member.php?u=135248 POLARKREIS 18 ALLEIN ALLEIN <a href="http://forum.indya.com/member.php?u=135249">POLARKREIS 18 ALLEIN</a> [url=http://forum.indya.com/member.php?u=135249]POLARKREIS 18 ALLEIN[/url] http://forum.indya.com/member.php?u=135249 POLARKREIS 18 ALLEIN <a href="http://forum.indya.com/member.php?u=135251">18 YEAR OLD GIRLS</a> [url=http://forum.indya.com/member.php?u=135251]18 YEAR OLD GIRLS[/url] http://forum.indya.com/member.php?u=135251 18 YEAR OLD GIRLS -- [[Pole]] &new{2008-12-10 (水) 03:11:01};
- <a href= http://hymm1546.977mb.com/18-teen/18-year-old-teens-pics.html >18 year old teens pics</a> <a href= http://hymm1547.977mb.com/18-porn/hot-18-year-old-porn.html >hot 18 year-old porn</a> <a href= http://hymm1547.977mb.com/18-porn/18-but-looks-younger-porn.html >18 but looks younger porn</a> <a href= http://hymm1544.977mb.com/18-sex/18-yr-sex.html >18 yr sex</a> <a href= http://hymm1546.977mb.com/18-teen/18-teen-naked.html >18 teen naked</a> [url=http://hymm1544.977mb.com/18-sex/18-yo-busty-teen-sex.html]18 yo busty teen sex[/url] [url=http://hymm1544.977mb.com/18-sex/18-sex.html]18 sex[/url] [url=http://hymm1547.977mb.com/18-porn/free-18-year-porn.html]free 18 year porn[/url] [url=http://hymm1547.977mb.com/18-porn/barely-18-amateur-porn-blowjobs+free-videos.html]barely 18 amateur porn blowjobs+free videos[/url] [url=http://hymm1546.977mb.com/18-teen/legal-naked-teen-18-girls.html]legal naked teen 18 girls[/url] http://hymm1544.977mb.com/18-sex/18-sex-movies.html 18 sex movies http://hymm1546.977mb.com/18-teen/18-nudist-teens.html 18 nudist teens http://hymm1546.977mb.com/18-teen/18-teen-fuck-pics.html 18 teen fuck pics http://hymm1546.977mb.com/18-teen/18-teen-yr-old.html 18 teen yr old http://hymm1546.977mb.com/18-teen/hot-18-teen-ass.html hot 18 teen ass -- [[Otgru]] &new{2008-12-10 (水) 19:18:04};
- OJizJNFmmr -- [[ygjortvou]] &new{2008-12-13 (土) 06:41:10};
- <a href="http://groups.yahoo.com/group/dnpspvr625/">ALL NATURAL GIRLS</a> [url=http://groups.yahoo.com/group/dnpspvr625/]ALL NATURAL GIRLS[/url] http://groups.yahoo.com/group/dnpspvr625/ ALL NATURAL GIRLS <a href="http://tech.groups.yahoo.com/group/pmnbqqz225/">GIRLS ALL CLOTHES OFF</a> [url=http://tech.groups.yahoo.com/group/pmnbqqz225/]GIRLS ALL CLOTHES OFF[/url] http://tech.groups.yahoo.com/group/pmnbqqz225/ GIRLS ALL CLOTHES OFF <a href="http://groups.yahoo.com/group/wmllcgp691/">ALL HOT GIRLS ONLY</a> [url=http://groups.yahoo.com/group/wmllcgp691/]ALL HOT GIRLS ONLY[/url] http://groups.yahoo.com/group/wmllcgp691/ ALL HOT GIRLS ONLY <a href="http://launch.groups.yahoo.com/group/dfxjxsb553/">ALL HOT GIRLS</a> [url=http://launch.groups.yahoo.com/group/dfxjxsb553/]ALL HOT GIRLS[/url] http://launch.groups.yahoo.com/group/dfxjxsb553/ ALL HOT GIRLS <a href="http://groups.yahoo.com/group/rdnsbdf507/">GIRLS SHOWING IT ALL</a> [url=http://groups.yahoo.com/group/rdnsbdf507/]GIRLS SHOWING IT ALL[/url] http://groups.yahoo.com/group/rdnsbdf507/ GIRLS SHOWING IT ALL -- [[Wpered]] &new{2008-12-13 (土) 16:12:37};
- <a href="http://forum.indya.com/member.php?u=135903">ALL NUDES</a> [url=http://forum.indya.com/member.php?u=135903]ALL NUDES[/url] http://forum.indya.com/member.php?u=135903 ALL NUDES <a href="http://forum.indya.com/member.php?u=135904">SEX ALL FREE ONLINE</a> [url=http://forum.indya.com/member.php?u=135904]SEX ALL FREE ONLINE[/url] http://forum.indya.com/member.php?u=135904 SEX ALL FREE ONLINE <a href="http://forum.indya.com/member.php?u=135905">ALL THINGS CFNM</a> [url=http://forum.indya.com/member.php?u=135905]ALL THINGS CFNM[/url] http://forum.indya.com/member.php?u=135905 ALL THINGS CFNM <a href="http://forum.indya.com/member.php?u=135906">ALL HOLES FILLED</a> [url=http://forum.indya.com/member.php?u=135906]ALL HOLES FILLED[/url] http://forum.indya.com/member.php?u=135906 ALL HOLES FILLED <a href="http://forum.indya.com/member.php?u=135908">ATK ALL NATURAL</a> [url=http://forum.indya.com/member.php?u=135908]ATK ALL NATURAL[/url] http://forum.indya.com/member.php?u=135908 ATK ALL NATURAL -- [[Zapa]] &new{2008-12-14 (日) 08:00:11};
- <a href="http://all-sexy-celebs.hi5.com">all sexy celebs</a> [url=http://all-sexy-celebs.hi5.com]all sexy celebs[/url] http://all-sexy-celebs.hi5.com all sexy celebs <a href="http://all-porn-toons.hi5.com">all porn toons</a> [url=http://all-porn-toons.hi5.com]all porn toons[/url] http://all-porn-toons.hi5.com all porn toons <a href="http://all-sex-hentai.hi5.com">all sex hentai</a> [url=http://all-sex-hentai.hi5.com]all sex hentai[/url] http://all-sex-hentai.hi5.com all sex hentai <a href="http://all-vids.hi5.com">all vids</a> [url=http://all-vids.hi5.com]all vids[/url] http://all-vids.hi5.com all vids <a href="http://cum-all-over.hi5.com">CUM ALL OVER</a> [url=http://cum-all-over.hi5.com]CUM ALL OVER[/url] http://cum-all-over.hi5.com CUM ALL OVER -- [[Pupa]] &new{2008-12-14 (日) 15:17:56};
- <a href="http://www.videocodezone.com/users/all-anal/">all anal</a> [url=http://www.videocodezone.com/users/all-anal/]all anal[/url] http://www.videocodezone.com/users/all-anal/ all anal <a href="http://www.videocodezone.com/users/ALL-DAT-AZZ/">ALL DAT AZZ</a> [url=http://www.videocodezone.com/users/ALL-DAT-AZZ/]ALL DAT AZZ[/url] http://www.videocodezone.com/users/ALL-DAT-AZZ/ ALL DAT AZZ <a href="http://www.videocodezone.com/users/ASS-4-ALL/">ASS 4 ALL</a> [url=http://www.videocodezone.com/users/ASS-4-ALL/]ASS 4 ALL[/url] http://www.videocodezone.com/users/ASS-4-ALL/ ASS 4 ALL <a href="http://www.videocodezone.com/users/BIG-BUTTS/">BIG BUTTS</a> [url=http://www.videocodezone.com/users/BIG-BUTTS/]BIG BUTTS[/url] http://www.videocodezone.com/users/BIG-BUTTS/ BIG BUTTS <a href="http://www.videocodezone.com/users/BIG-BUTT/">BIG BUTT</a> [url=http://www.videocodezone.com/users/BIG-BUTT/]BIG BUTT[/url] http://www.videocodezone.com/users/BIG-BUTT/ BIG BUTT -- [[Suka]] &new{2008-12-14 (日) 23:07:35};
- <a href="http://www.mixx.com/users/ALL_GIRLS_NEXT_DOOR">ALL GIRLS NEXT DOOR</a> [url=http://www.mixx.com/users/ALL_GIRLS_NEXT_DOOR]ALL GIRLS NEXT DOOR[/url] http://www.mixx.com/users/ALL_GIRLS_NEXT_DOOR ALL GIRLS NEXT DOOR <a href="http://www.mixx.com/users/TEENS_LIKE_IT_BIG">TEENS LIKE IT BIG</a> [url=http://www.mixx.com/users/TEENS_LIKE_IT_BIG]TEENS LIKE IT BIG[/url] http://www.mixx.com/users/TEENS_LIKE_IT_BIG TEENS LIKE IT BIG <a href="http://www.mixx.com/users/BIG_PENIS">BIG PENIS</a> [url=http://www.mixx.com/users/BIG_PENIS]BIG PENIS[/url] http://www.mixx.com/users/BIG_PENIS BIG PENIS <a href="http://www.mixx.com/users/MILFS_LIKE_IT_BIG">MILFS LIKE IT BIG</a> [url=http://www.mixx.com/users/MILFS_LIKE_IT_BIG]MILFS LIKE IT BIG[/url] http://www.mixx.com/users/MILFS_LIKE_IT_BIG MILFS LIKE IT BIG <a href="http://www.mixx.com/users/BIG_GIRLS">BIG GIRLS</a> [url=http://www.mixx.com/users/BIG_GIRLS]BIG GIRLS[/url] http://www.mixx.com/users/BIG_GIRLS BIG GIRLS -- [[Pole]] &new{2008-12-15 (月) 06:56:34};
- <a href="http://groups.yahoo.com/group/kshfgjl948/">tube</a> [url=http://groups.yahoo.com/group/kshfgjl948/]tube[/url] http://groups.yahoo.com/group/kshfgjl948/ tube <a href="http://launch.groups.yahoo.com/group/gsnhkwb391/">you tube</a> [url=http://launch.groups.yahoo.com/group/gsnhkwb391/]you tube[/url] http://launch.groups.yahoo.com/group/gsnhkwb391/ you tube <a href="http://groups.yahoo.com/group/pktdvss124/">u tube</a> [url=http://groups.yahoo.com/group/pktdvss124/]u tube[/url] http://groups.yahoo.com/group/pktdvss124/ u tube <a href="http://groups.yahoo.com/group/llmxvtr692/">tube com</a> [url=http://groups.yahoo.com/group/llmxvtr692/]tube com[/url] http://groups.yahoo.com/group/llmxvtr692/ tube com <a href="http://tech.groups.yahoo.com/group/bskfmwf120/">you tube com</a> [url=http://tech.groups.yahoo.com/group/bskfmwf120/]you tube com[/url] http://tech.groups.yahoo.com/group/bskfmwf120/ you tube com -- [[Pole]] &new{2008-12-15 (月) 21:13:25};
- <a href="http://www.videocodezone.com/users/www-tube/">www tube</a> [url=http://www.videocodezone.com/users/www-tube/]www tube[/url] http://www.videocodezone.com/users/www-tube/ www tube <a href="http://www.videocodezone.com/users/tube-videos/">tube videos</a> [url=http://www.videocodezone.com/users/tube-videos/]tube videos[/url] http://www.videocodezone.com/users/tube-videos/ tube videos <a href="http://www.videocodezone.com/users/www-you-tube/">www you tube</a> [url=http://www.videocodezone.com/users/www-you-tube/]www you tube[/url] http://www.videocodezone.com/users/www-you-tube/ www you tube <a href="http://www.videocodezone.com/users/x-tube/">x tube</a> [url=http://www.videocodezone.com/users/x-tube/]x tube[/url] http://www.videocodezone.com/users/x-tube/ x tube <a href="http://www.videocodezone.com/users/free-tube/">free tube</a> [url=http://www.videocodezone.com/users/free-tube/]free tube[/url] http://www.videocodezone.com/users/free-tube/ free tube -- [[Mnogo]] &new{2008-12-18 (木) 16:53:16};
- <a href="http://tqftxrcbfvv.webnode.com/">the tube</a> [url=http://tqftxrcbfvv.webnode.com/]the tube[/url] http://tqftxrcbfvv.webnode.com/ the tube <a href="http://znfvzbtlnjs.webnode.com/">tube video</a> [url=http://znfvzbtlnjs.webnode.com/]tube video[/url] http://znfvzbtlnjs.webnode.com/ tube video <a href="http://vkxhcgqwqsn.webnode.com/">london tube</a> [url=http://vkxhcgqwqsn.webnode.com/]london tube[/url] http://vkxhcgqwqsn.webnode.com/ london tube <a href="http://qlwknhzdbwz.webnode.com/">you tube videos</a> [url=http://qlwknhzdbwz.webnode.com/]you tube videos[/url] http://qlwknhzdbwz.webnode.com/ you tube videos <a href="http://srhmwljvtrz.webnode.com/">eskimo tube</a> [url=http://srhmwljvtrz.webnode.com/]eskimo tube[/url] http://srhmwljvtrz.webnode.com/ eskimo tube -- [[Otgru]] &new{2008-12-19 (金) 03:33:03};
- <a href="http://you-tube-video.hi5.com">you tube video</a> [url=http://you-tube-video.hi5.com]you tube video[/url] http://you-tube-video.hi5.com you tube video <a href="http://the-you-tube.hi5.com">the you tube</a> [url=http://the-you-tube.hi5.com]the you tube[/url] http://the-you-tube.hi5.com the you tube <a href="http://your-tube.hi5.com">your tube</a> [url=http://your-tube.hi5.com]your tube[/url] http://your-tube.hi5.com your tube <a href="http://music-tube.hi5.com">music tube</a> [url=http://music-tube.hi5.com]music tube[/url] http://music-tube.hi5.com music tube <a href="http://tube-amp.hi5.com">tube amp</a> [url=http://tube-amp.hi5.com]tube amp[/url] http://tube-amp.hi5.com tube amp -- [[Prosto]] &new{2008-12-19 (金) 13:36:33};
#comment
*HaskellでWIKI [#x4eef27a]
書いてみました。いまのところ日本語は使えません。
http://icecs.ice.nuie.nagoya-u.ac.jp/~h043078b/wiki.cgi
* History of Haskell [#z4d010cb]
- http://haskell.org/haskellwiki/History_of_Haskell
- HOPL'07に提出する予定の論文の、ドラフトだそうです。
* HaskellでOS。 [#s0a682d7]
http://www.cse.ogi.edu/~hallgren/House/ -- [[源馬]] &new{2006-07-04 (火) 16:16:05};
*The Evolution of a Haskell Programmer [#ga1c48ba]
[[The Evolution of a Haskell Programmer:http://www.willamette.edu/~fruehr/haskell/evolution.html]] かなりハイレベルにバカやってる感じ
- バカだ〜!fold関数使うまではわかるけど、その後が!まだまだまだまだ続くし。 -- [[げんま]] &new{2006-08-12 (土) 10:35:43};
- インタプリタを作って階乗計算させたり,型クラスを使ったテクニックなんかもあるので分かると結構良いかも。 -- [[けいご]] &new{2006-08-12 (土) 15:27:52};
* Haskell 型クラス、MPTC, Fundeps と type improvement by けいご [#r0d7ac1a]
- 2008/10/22
#ref(活動記録/20081022/fundeps.pdf,)