Haskell/OCaml
文章平均质量分 72
lambda_z
恶忌阴,善忌阳。故恶之显者祸浅,而隐者祸深;善之显者功小,而隐者功大。
展开
-
在#haskell@freenode中使用lambdabot
IRC可不只是闲聊的地方,她是你随时可用的好工具。IRC中有很多Bot可以随时为你服务。这里只收集了在#haskell@freenode中使用的lambdabot。(为了不影响别人,你最好发私信: /msg lambdabot ...)查hoogle:ERC> @hoogle applicative Control.Applicative class Functor f => Appl原创 2012-12-28 13:44:25 · 2731 阅读 · 0 评论 -
haskell代码片段
-- 经典的菲波纳契数列的函数定义,求每一个位置上的数值fib 1 = 1fib 2 = 1fib n = fib(n-1) + fib(n-2)-- 产生一个无限长的fib数列fib_l n = fib n : fib_l (n+1)take 10 (fib_l 1) => [1,1,2,3,5,8,13,21,34,55]--另一个更快解法fib原创 2011-09-21 16:20:54 · 1501 阅读 · 0 评论 -
OCaml for Haskellers
最大的差别是OCaml默认是impure且strict.OCaml特有的特性:OCaml有命名参数(~x:i 绑定命名参数x的值到i,~x是~x:x的缩写).OCaml有可选参数(?(x:i = default)以default为缺省值绑定i到可选命名参数x).OCaml有open的联合类型([>'Integer of int|'Real of float])此处类型保翻译 2011-11-05 10:37:13 · 3443 阅读 · 0 评论 -
haskell使用技巧
.原来GHCI是可以编程的, 真方便$cat ~/.ghci:def hoogle \str -> return $ ":! hoogle --count=15 \"" ++ str ++ "\"":cd /media/G/www/qachina/db/doc/money:load Money.hs这里定义了函数hoogle, 当进入ghci后, 就可以用它查寻ho原创 2011-09-21 16:19:45 · 988 阅读 · 0 评论 -
haskell并发编程
线程相关forkIO :: IO a -> IO ThreadIdforkIO是Haskell内建的函数,它的参数是一个IO动作,forkIO所做的事情就是创建一个并发的Haskell线程来执行这个IO动作。一旦这个新线程建立,Haskell的运行时系统便会将它与其他Haskell线程并行执行。Haskell里面由forkIO产生出来的线程是非常轻量级的:只占用几百个字转载 2011-09-21 16:18:49 · 6087 阅读 · 0 评论 -
Applicative与Arrow
原文说得非常清楚,不翻译效果可能更好。进入ghci > :m + Control.Applicative Control.ArrowControl.Applicative Control.Arrow>filter ((>2) &&& ( >>> uncurry (&&)) [1..10][3,4,5,6]We have two mysterious operat翻译 2011-09-21 16:17:16 · 833 阅读 · 0 评论 -
OCaml中的“协变”与“逆变”
概略地说,子类型是类型间的一种二元关系。如果t1是t2的子类型,那么使用t2的地方就可以使用t1。在OCaml中,子类型起因于多态变体(polymorphic variants)。比如,[`A ]是[ `A |`B ]的子类型,因为能处理`A或`B的代码,一定能处理`A。你可以使用表达式 (e : t1:> t2) 强制OCaml检查子类型。这个表达式有两层含义:首先核实t1是t2的子翻译 2011-12-08 10:33:06 · 1430 阅读 · 0 评论 -
使用OCaml的Functor与First class module
假设我们已经有啤酒与威士忌两个模块:module Beer = struct type t = BEER let pour () = let () = Printf.printf "... a nice head ... " in BEER let consume t =Printf.printf "Ha! No原创 2011-11-24 11:09:31 · 1628 阅读 · 0 评论 -
OCaml样本代码
这段代码演示了好的OCaml编程风格。代码使用不平衡有序二叉树简单实现有限集合。代码中的注释可能多了点,但还可接受。(** An implementation of functional, finite sets.** Author: Brian Emre Aydemir* Email: emre@cs.caltech.edu** ---------------翻译 2011-11-03 20:04:32 · 1355 阅读 · 0 评论 -
稳定,快速的xmonad
一台旧电脑跑stumpwm有点吃力,就换成了很久以前使用过的xmonad,网上一搜,发现xmonad的开发还比较活跃!简单修改了以前的配置就可以运行了,系统跑起来既快又稳定,很适合编程序。updated on github.安装(先装好GHC)$cabal update && cabal install xmonad && cabal install xmonad-contrib原创 2013-01-22 11:19:04 · 11132 阅读 · 0 评论