Haskell -- list

List 中的元素类型必须一致

List 中的 List 可以是不同长度,但必须得是相同的类型

拼接操作符++

另:字符串 "AB" 只是 [‘A‘, ‘B‘] 的语法糖,可以用list操作符来作用于字符串上

“:”运算符只能一次插入一个元素,否则报错

下标操作符 !! ,试了下二维的,也是可以的

比较符

先从第一元素开始比较大小,直到两个对比的元素能比较出大小

List 常用函数

head 返回一个 List 的头部,也就是 List 的首个元素

tail 返回一个 List
的尾部,也就是 List 除去头部之后的部分

last
返回一个 List 的最后一个元素

init
返回一个 List 除去最后一个元素的部分

length 返回 List 的长度

null 判断 List 是否为空

reverse 转置 List

take 取走 List 中前几个元素

drop 与 take 相反,用来删除

maximum,minimum,sum,product

Range:

[start..end] 产生从 start 到 end 的list

[start, next..end] start 和 next 之间的距离会被视为规则

而python是将规则放在range的第三个参数

cycle 无限循环元素,但是 Haskell 是惰性求值的,当你要多少的时候,他才会给你多少

List 推导式,和python很相似,可能是 python 受了 Haskell 的启发吧

"<-" 可以变相理解为 for,可以在 "|" 后面插入多个条件

格式如同数学上的

zip 函数也和 python 里面一样的

规则是选定短的 List 为上界,貌似不能合并多个

Haskell -- list

时间: 2024-10-02 18:45:01

Haskell -- list的相关文章

Haskell环境搭建(windows)(一)

1.官网上(https://www.haskell.org/platform/windows.html)下载Haskell Platform,最新版本为8.2.1,只支持64位,有个core版和full版,full版包含了库,就下full版试试 2.cmd下输入 "cabal user-config init",可以看到配置文件的路径,找到配置文件,添加输入 extra-prog-path: C:\Program Files\Haskell Platform\8.2.1\msys\us

Mac OS X 上的安装haskell开发环境

到haskell官方下载haskell的工具包: https://downloads.haskell.org/~platform/2014.2.0.0/Haskell%20Platform%202014.2.0.0%2064bit.signed.pkg adeMacBook-Pro:haskell_dev apple$ ghci GHCi, version 7.8.3: http://www.haskell.org/ghc/ :? for help Loading package ghc-pri

函数式编程语言LISP,python,haskell,clojure

说说我自己的背景吧,我是个半吊子的程序员,做任何事情喜欢比较了解然后再尝试,我接触过很多语言,大多数都把它当成工具来使用 我现在的工作大部分主要在于数据挖掘与机器学习方面,也学习web开发,我第一个拿来工作的语言是python,我是从那里得知函数式编程的概念的 说起lisp据说python就是模仿的lisp,而得知这个语言是从黑客与画家这本书中得知的,据说是一个特别值得尝试的语言,由于作者说如果年龄超过25岁,最好不要尝试学习它,我明年就本命年了,看来应该试着尝试一下了 在之前面临招工作的时候曾

haskell 函数

在 Haskell 中是用空格来将函数名与参数分隔的 常用库函数 min  接受两个可比较大小的参数,并返回较小的那个. max  同上,返回值大的那个. succ 返回数的后继,即+1. 函数调用拥有最高的优先顺序,如下两句是等效的:答案都是16. Prelude>succ 9 +max 5 4 +1 Prelude>(succ 9) +(max 5 4) +1 函数定义: 定义一个乘以2的函数DoubleMe let DoubleMe x=x*2   //注意"let"

POPUSH中增加haskell支持的实现

我是李映辉,在这次作业中和王程鹏一起负责实现popush项目中haskell的支持.刚刚接到这个任务的时候我在家里,当时我以为这个是最重的任务了,当时我已经做好了刷夜的思想准备.在中途王程鹏加入到了我们组,被安排和我一起结对编程,我才感觉到任务轻了一些. 由于我在家的时候不方便交流,所以我们约定等我回校以后再正式开始做作业,但是在这之前王程鹏还和学校的一些同学进行了一些交流,他的学校做的这些工作使得我们后来的工作变得异常顺利. 我们实现的过程非常的顺利:首先我们两个人讨论了一下解决的思路.王程鹏

haskell模块(modules)

装载模块 Haskell 中的模块是含有一组相关的函数,类型和类型类的组合.而 Haskell 进程的本质便是从主模块中引用其它模块并调用其中的函数来执行操作.这样可以把代码分成多块,只要一个模块足够的独立,它里面的函数便可以被不同的进程反复重用.这就让不同的代码各司其职,提高了代码的健壮性. Haskell 的标准库就是一组模块,每个模块都含有一组功能相近或相关的函数和类型.有处理 List 的模块,有处理并发的模块,也有处理复数的模块,等等.目前为止我们谈及的所有函数,类型以及类型类都是 P

Haskell高阶函数

Haskell functions can take functions as parameters and return functions as return values. A function that does either of those is called a higher order function. Higher order functions aren't just a part of the Haskell experience, they pretty much ar

Haskell函数的语法

本章讲的就是 Haskell 那套独特的语法结构,先从模式匹配开始.模式匹配通过检查数据的特定结构来检查其是否匹配,并按模式从中取得数据. 在定义函数时,你可以为不同的模式分别定义函数本身,这就让代码更加简洁易读.你可以匹配一切数据类型 --- 数字,字符,List,元组,等等.我们弄个简单函数,让它检查我们传给它的数字是不是 7. lucky :: (Integral a) => a -> String   lucky 7 = "LUCKY NUMBER SEVEN!" 

hello.hs haskell

hello.ns -- 创建模块 Main 首字母大写module Main where-- 导入可能用到的模块import System.Environment-- haskell 程序首先会执行 Main模块的 main action-- main :: IO () 是type 声明, 这里可省略-- type :: IO 是monad的实例,main :: IO ()-- 等号左边是 定义一个 name-- 等号右边是 其他定义的组合-- 这里有do-blockmain = do     

Haskell: Difference between the function composition function (.) and operator $

http://learnyouahaskell.com/higher-order-functions#function-application http://lambda.jstolarek.com/2012/03/function-composition-and-dollar-operator-in-haskell/ 其实这有关操作符的优先级(priority)和关联性(association) (这里用了"操作符"这个名称,但是其实Haskell里全是函数...) 微妙之差(至少在