Haskell是个神码语言

本文探讨了Haskell语言中的lastSeveral函数,该函数接受一个整数和一个列表作为参数,不限定列表元素类型。通过类型声明 `(Int, [a]) -> [a]` 显示了其对任意类型的支持。然而,当类型约束为 `(Ord a) => Int -> [a] -> [a]` 时,a必须属于Ord类型类,确保输入和输出列表的类型一致性。尽管实现细节未展开,但提及Haskell的列表实现(单链表)影响了时间复杂度。文章指出,Haskell在实现某些算法时表现出清晰简洁的特点。" 112374153,10540758,Django Channels+Celery实现WebSocket日志监听,"['Django框架', 'WebSocket', '异步编程', 'Celery任务队列', '日志处理']
摘要由CSDN通过智能技术生成
Haskell语言是一种函数式编程语言,而且是具有lazy evaluation(懒求值)特性的函数式编程语言。一开始看见函数式编程概念,感觉很高深,很computer science,很有计算机科学范儿,但是,学了一点之后,才发现它偏数学味儿,不是十分贴近computer science,特别对于时间、空间复杂度一开始都是隐藏着的,不作为主要的特性传达给读者的。

我用两本Haskell书来入门,但到目前为止,只能算是入了扇大门,能编些简单的函数而已。这两本书分别是Real World Haskell和Learn You A Haskell For Great Good。前面这本书我读完了前3章,读到第4章半当中的时候实在读不下去了。后面这本书则目前看到Recursion这块,刚讲了快排算法。

Haskell语言的语法里面,函数调用是比较简单易懂的。比如,div 3 2就是对3作除以2的整数除法。第一个div就是函数,后面跟着的都是参数。参数可以用括号括起来,这样就能表达较为复杂的情况,例如嵌套的函数调用:div (add 1 2) 2。

然后复杂的一点的是类型,类型除了对象或数据本身的类型之外,还有type class(类型类属)。比如说,Int类型是整数本身的类型,而Ord(可作大小比较)则是类型类属(type class),类似于C#语言中的接口概念。一个Int一定是一个Ord,一个Ord未必是一个Int。

还有一种东西叫类型变量,其实就是把本来用于数据的变量概念用在类型上面。

为子把上面讲的三个概念放在一起
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值