看了5、6两章,笔记在这里~
首先是currying:
值得一提的是——接受两个参数的前缀函数如果先传入第二个参数...
let elemOf123 = (`elem` [1,2,3])
内置函数:
flip,map,filter,takeWhile,foldl,foldr,foldl1,foldr1,scanl,scanr,scanl1,scanr1
lambdas are expressions——它创造出一个值——匿名函数
优先使用现有内置函数,利用currying进行partial application构造需要的函数而非轻易使用lambda(或者使用函数复合制造需要的函数),总之,在需要一个非内置函数的时候,尽量走create on the fly的门路而非lambda
folds有点像reduce
$是方法应用的另一种形式,但具有最低运算优先级,且是右结合的
$除了可以用来省略一些括号之外,其本身也是一个function,感觉这一点具有重要意义,这极大地统一了haskell程序运行的规律:
map ($ 3) [(4+), (10*), (^2), sqrt]
函数组合其实就是高中、大学里学的
复合函数
函数想要复合,条件当然是“牛头要对马嘴”了...
如果想要把一个嵌套了很多层括号的式子转变成函数复合的写法,只需将最“里面”的那个函数的最后一个参数用'$'格在右边,其它部分按照一层嵌套一个'.'符的形式改写,比如有:
replicate 100 (product (map (*3) (zipWith max [1,2,3,4,5] [4,5,6,7,8])))
可以改写为:
replicate 100 . product . map (*3) . zipWith max [1,2,3,4,5] $ [4,5,6,7,8]
函数复合有助于写出"pointless"风格的函数定义,比如:
fn x = ceiling (negate (tan (cos (max 50 x))))
可以写成:
fn = ceiling . negate . tan . cos . max 50
也就是说,变成函数复合的写法后,由于currying,两边的'x'“约掉了”...
============================
...还有一个问题需要想想:说到currying,怎样才能对一个接受3个参数的函数首先传入它的第三个参数呢?如果说haskell的函数和数学函数类似的话,数学函数先代入第三个参数也是很合理的事情,不知道haskell里面该怎么写...
(我写了一种嵌套使用'`'符号的方式结果报语法错误...)
分享到:
相关推荐
本教程针对的对象是具有命令式编程语言经验的人,但以前从未使用过功能语言进行编程。
本书是为那些具有命令式语言编程基础知识(例如C / C ++,Java,Python,Ruby等)并且可能会或可能不知道函数式编程(例如Haskell,Scala,Erlang)的人们学习Erlang的一种方法。 ,Clojure,OCaml等)。
### 关于《Learn You A Haskell For Great Good》的知识点总结 #### 一、书籍基本信息概述 本书名为《Learn You A Haskell For Great Good》,是一本专为Haskell编程语言初学者编写的指南。作者是Miran Lipovaca,...
我的工作通过 Learn You a Haskell for Great Good! 完全的: 介绍 出发 类型和类型类 函数中的语法 递归 高阶函数 模块 制作我们自己的类型和类型类 输入和输出 函数式解决问题 函子、应用函子和幺半群 一大把...
《学习您的Haskell笔记本》是基于Jupyter Notebook的Haskell学习资源,改编自经典的Haskell教程《Learn You a Haskell for Great Good!》。这个项目旨在为Haskell初学者提供一个交互式的学习环境,通过Jupyter ...
#### 二、《Learn You a Haskell for Great Good!》书籍概述 这本书是一本面向初学者的Haskell教程,作者是Miran Lipovac。本书旨在帮助读者轻松地掌握Haskell语言的基础知识和高级特性,并通过实践项目加深理解。 ...
《Haskell语言教程》是一本深受开发者欢迎的在线书籍,主要目标是帮助初学者深入理解Haskell这门纯函数式编程语言。Haskell以其强大的理论基础、严格的类型系统和静态类型而著称,它鼓励程序员编写简洁、清晰且易于...
文档的标题“Learn_You_a_Haskell_for_Great_Good.pdf”和描述部分表明这本书是关于学习Haskell语言的入门指南。Haskell是一种高级的纯函数式编程语言,它具有强类型系统和惰性求值特性。它以其在编程语言理论领域的...
[ " Learn You a Haskell for Great Good! " , " Programming in Haskell " , " Real World Haskell " ] > lengthOf ?? doc $ root . named " books " ... named " book " 7 > doc ^? root . named " books " ... ...
Haskell 学习资料,Learn you a Haskell.
对 Haskell(for great good)的引用来自一本关于学习同名功能语言的好书,名为“Learn You a Haskell for Great Good!” 可以在上找到。 用 为您的操作系统安装和配置 Docker ( ) 通过发出docker info检查它...