Haskell学习-functor】的更多相关文章

原文地址:Haskell学习-functor 什么是Functor functor 就是可以执行map操作的对象,functor就像是附加了语义的表达式,可以用盒子进行比喻.functor 的定义可以这样理解:给出a映射到b的函数和装了a的盒子,结果会返回装了b的盒子.fmap 可以看作是一个接受一个function 和一个 functor 的函数,它把function 应用到 functor 的每一个元素(映射). -- Functor的定义 class Functor f where fma…
原文地址:Haskell学习-monad 什么是Monad Haskell是一门纯函数式的语言,纯函数的优点是安全可靠.函数输出完全取决于输入,不存在任何隐式依赖,它的存在如同数学公式般完美无缺.可是纯函数因为隔绝了外部环境,连最基本的输入输出都无法完成.而 Monad 就是 Haskell 给出的解决方案.但Monad 并不仅仅是 IO 操作的抽象,它更是多种类似操作之间共性的抽象.所以 Monad 解决的问题并不局限在 IO 上,像 Haskell 中的 Maybe 和 [] 都是 Mona…
原文地址:Haskell学习-函数式编程初探   为什么要学习函数式编程?为什么要学习Haskell?   .net到前端,C#和JavaScript对我来说如果谈不上精通,最起码也算是到了非常熟悉的程度.这两门语言就像是我的盾牌和宝剑,给我保驾护航,开山劈石,伴随着我不断成长.同时C#和JavaScript它们本身也在不断地进化,不断出现越来越多方便的语法糖,但追根到底很多都是从函数式语言汲取的精华.比如高阶函数,lambada表达式,柯里化等.   于是从探险的角度,以好奇的心态开始学习函数…
原文地址:Haskell学习-高阶函数 高阶函数(higher-order function)就是指可以操作函数的函数,即函数可以作为参数,也可以作为返回结果.有了这两个特性,haskell可以实现许多神奇的效果. 柯里化(Currying) 在haskell中所有的算术运算符都是函数(包括大小于等于关系符等),而它们的快捷方式都可以省略操作数(参数). (+) 1 2 -- (+) 是需要两个操作数的函数 > 3 (+1) 2 -- (+1) 是需要左操作数的函数 > 3 (3*) 3 --…
一开始学习函数式编程语言就被告知函数式编程语言是一种“定义式”的语言,而不是一种命令式的语言,在学习haskell的函数语法时,此感觉更加强烈,haskell的函数定义倾向于一种类似C++里面的switch /case 的语义,将函数所处理的事情分类,然后定义好每个分类该如何返回.所以我的函数笔记主要就haskell函数里的几种分类情况进行讨论: condition expression 语法类似于if then else ;允许嵌套,但是每个if  必须对应一个else 否则语法报错.示例如下…
七月记录:整个七月就在玩,参加夏令营,去遨游.... 八月份需要开始复习,正等书的这个过程突然想起一直没有完成的学习-haskell,所以当前的目标是用haskell制作一个局域网通信的小工具,要求:一,完成工具要求  二,完备的设计文档   三,报告 学习资料:http://fleurer-lee.com/lyah/chapters.htm  haskell趣学指南 (后续还会有别的书,rwh等) 基本语法: 类型: 常见基本类型:   Int:一般是32bit整数 Integer:无限大整数…
随着学习的深入,笔记会补充和修订.当然,这个补充修订也许会鸽,但我一定会坚持写完. 这个笔记假定你至少学过C/C++及Python,或与这两种语言类型相同的语言. 类型系统概述 “Haskell’s type system allows us to think at a very abstract level: it permits us to write concise, powerful programs.” 简单地说,Haskell拥有一个强.静态.自动推断的类型系统.Haskell的强同…
Haskell基础语法 Real World Haskell 中文版 Haskell趣学指南…
感谢<Real World Haskell>在网上的免费发布,可以白嫖学Haskell这个久闻大名的函数式编程语言了. 本文运行于openSUSE Tumbleweed下,运行相关命令时留意. 安装 Linux下想搞和编程相关的事情非常简单,至少比配置游戏要简单. sudo zypper in ghc ghc即Glasgow Haskell Compiler,一个主流的编译器.也支持python式的互动执行(ghci).笔者运行时该编译器已经是8.0.2版本了. 运行 输入ghci,会进入Ha…
truncate pi -- 表示截断, 此处结果为 3 haskell中的touple是可变的,而python中是不可变的 lines函数: lines :: String -> [String] 以‘\n'为分隔符,建立列表 interact 函数: interact :: (String -> String) -> IO ()…