随笔分类 - Haskell
摘要:这一部分主要讲Haskell的函数语法。1.模式匹配(Pattern Match)模式匹配主要用来定义一些数据必须遵循的规则,根据他们来解析数据。在定义函数的时候,可以为不同的模式定义不同的函数体,以便写出可读性较高的代码。Haskell允许对很多种类型进行模式匹配,数值型、字符、列表、元组等等。下面是一个函数用来检查输入参数是不是7:lucky::Int->Stringlucky 7 = "LUCKY NUMBER SEVEN"lucky x = "Sorry, you are out of lucky, pal!"我们试着调用一下上面的函数:*
        阅读全文
                
摘要:强大的类型系统是Haskell的一个非常大的优势。Haskell所有表达式类型在编译期判断。这样的话,可以使得代码更加安全,比如说,拿一个整数和一个字符串进行除法运算是没办法进行的,那么在编译器就会直接报错,不会等到运行时程序崩溃才知道。Haskell与Java不一样,Haskell能够进行类型推断(Type Inference),也就是说,你不需要明确的说100是个数字,或者说是整型,编译期能推断出这是一个整型。在GHCi中,我们可以使用:t 命令来检测一个表达式的类型。Prelude> :t 'q' 'q' :: CharPrelude> :t 
        阅读全文
                
摘要:1.TupleTuple用来将几个元素打包成为一个值。Tuple用()包起来。看起来和List很像,但是Tuple和List有很重要的区别:(1)List元素数量是不固定的,但是Tuple的元素数量是固定的;(2)List必须存储同种类型的元素,但是Tuple可以存储不同类型元素。看几个Tuple的例子:Prelude> (1,2)(1,2)Prelude> (1,"a",True)(1,"a",True)Tuple看起来实在是和List太像了,我一开始也不知道Tuple存在的必要在哪。现在假设有这样的一种需求,我们需要表示平面上四边形的四个
        阅读全文
                
摘要:1.Ranges有时候我们有这样一种需求:我们需要一个List,它的元素从1到20。从1到20敲出每一个元素肯定是一种可以搞定的办法,但肯定不是好办法。这时候,我们可以使用Haskell的Ranges来处理这种需求。Ranges用来构建元素可以按照某种顺序枚举的List。像数字1,2,3,4就是可枚举的;字母a,b,c,d也是。我们看看两个Ranges的例子:上面说到的1-20,使用Ranges可以这样表示:Prelude> [1..20][1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]同理,所有的小写字母可以这样表示:Prelud
        阅读全文
                
摘要:Learn Haskell这一系列博客是《Learn You a Haskell for Great Good》的读书笔记。一句话介绍:Haskell是一门纯粹的函数式编程语言。至于什么是函数式编程?尽管网上也有很多关于函数式语言与指令式语言之间的区别与联系,但是没有实际使用过函数式编程语言的情况下,我也搞不清楚。因此,先从学习一门函数式编程语言开始吧。1.安装Haskell要开始使用Haskell其实很简单,只需要一个文本编辑器和一个Haskell的编译器。目前来说最流行的Haskell的编译器是Glasgow Haskell Compiler(GHC),我使用的就是这样一个编译器。一般来说
        阅读全文
                
                    
                
浙公网安备 33010602011771号