2011年8月10日星期三

yszhou's First Haskell Function

这个暑假在杭州实习,前天晚上用手机翻到Haskell的主页,看到《Learn You a Haskell for Great Good》,很轻松的那种。之前尝试过《Real World Haskell》,也许英语水平不行?反正很挫。

今天晚上在CPyUG上看到有pyer感慨函数式编程,便把毕设时开小差下载下来的HaskellPlatform安装上,写了以下函数,用于实现Descartesian Product。算是一步一步更General吧。高级语言表达思维,硬件来确认,他们接起来的细节是什么?

enum :: Int -> [[Char]]
enum 1 = ["A", "T", "C", "G"]
enum n = [ x:enum_decr | x <- "ATCG", enum_decr <- enum (n - 1) ]

enum' :: [Char] -> Int -> [[Char]]
enum' init_value 1 = [ [x] | x <- init_value ]
enum' init_value n = [ x:enum_prev | x <- init_value, enum_prev <- enum' init_value (n - 1) ]

enum'' :: [a] -> Int -> [[a]]
enum'' init_value 1 = [ [x] | x <- init_value ]
enum'' init_value n = [ x:enum_prev | x <- init_value, enum_prev <- enum'' init_value (n - 1) ]

没有评论:

发表评论