新学了些东西记录下来
=====================元组============================
fst, snd
fst 提取元组第一元素
snd 提取元组第二元素
Hugs> fst ("hello", "world")
"hello"
Hugs> snd ("hello", "world")
"world"
注: 这个函数不能对2个以上数据的元组提取, 否则会出错
习题2: 使用fst, snd函数来提取元组((1,"a"),"Haskell")中的"a"
snd (fst((1,"a"),"Haskell"))
===============================列表============================
列表内只能放置相同数据.
构建列表:
Hugs> [1,2,3,4,5]
[1,2,3,4,5]
Hugs> 1:2:3:5:[]
[1,2,3,5]
Hugs> 0:[1,2,3,4]
[0,1,2,3,4]
Hugs> 'H':'a':'s':'k':'e':'l':'l':[]
"Haskell"
Hugs> ['H','a','s','k','e','l','l']
"Haskell"
在Haskell中,字符串只是一个带字符的列表.
几个基本的列表函数, length , head, tail
具体看:
Hugs> head ['H','a','s','k','e','l','l']
'H'
Hugs> tail ['H','a','s','k','e','l','l']
"askell"
Hugs> length ['H','a','s','k','e','l','l']
7
++ 用于2个字符串相+
show 把值转换为字符串
read 把字符串转为数字
几个简单列表函数: map , filter, foldr, foldl, zip
先介绍:
Char.toUpper 将传入的参数转为大写
Char.isLower 判断字符是否是小写, 返回True or False
代码:
Prelude> map fst [(1, 2), (3, 4), (5, 6)]
[1,3,5]
Hugs> filter (< 4) [1 .. 5]
[1,2,3]
Prelude> zip [1 .. 5] ['a' .. 'e']
[(1,'a'),(2,'b'),(3,'c'),(4,'d'),(5,'e')]
Hugs> foldl (-) 0 [1..5]
-15
Hugs> foldr (-) 0 [1..5]
3
注意: .. 用于构建列表.
foldl 采用左结合,初始值在左 即: ((((0-1)-2)-3)-4)-5
foldr 采用右结合,初始值在右 即: 1-(2-(3-(4-(5-0))))
foldl比foldr 效率要高
但是: foldr 可以边计算边得出值, foldl只能在计算到最后才能得出值
习题3: 利用map 将字符串"hELLO" 专为列表[True, False,False,False,False]
map Char.isLower "hELLO"
习题4:利用上面所学知识, 计算一个字符串小写字母的个数,如:"Hello" 返回4
length (filter Char.isLower "Hello")
习题6:写一个函数,它将计算一个长度大于2的包含元组的列表,
如:[(5,’b’),(1,’c’),(6,’a’)], 需要返回第2个元组,第一个元素,上列为1
PS:由于还没学函数,不知道怎么写.
SO:
fst (head (tail [(5,'b'),(1,'c'),(6,'a')]))
OK ,The end...
分享到:
相关推荐
学习您的haskell笔记本:Jupyter改编的《 Learn a Haskell for Great Good!
haskell-概念-思维导图作为思维导图的学习haskell笔记
Haskell实践Graham Hutton撰写的Haskell编程笔记/实践-第二版
这些是我关于如何使用 github 和 cabal 创建新的 Haskell 库的笔记。重要链接阴谋集团指南: : Github 降价帮助: : Haddock 用户指南: : 初始化 Cabal 您只需为每个系统执行一次此操作。 以下所有步骤都应在您的...
Action-Haskell-分析这是你... 布赖恩赫特的 Monad 教程4/4/14 读写 JSON,使用 Haskell 数据结构1、2、12MWF早晨早餐桌编码器。 喜欢健身房,但有代码和咖啡。 4/18/14 数字和字符串操作3、7、8 5/2/14 可视化数据,将
很棒的笔记 _ _ _____ ___ ___ _ __ ___ __... 个人学习笔记-很棒的自我笔记 样品 C 用指针实现通用变量 void * lsearch ( void *key, void *base, int n, int elemSize, int (*cmpfn)( void *, void *) ) { f
本项目记录从本科开始的各种代码片段和学习笔记,以便再实际应用中Swift造出轮子。本项目涵盖领域如下 收录的编程语言包括跑的比谁都快的C/C++,面向对象的Java和Python,函数式编程家族的Haskell、Scala和Lisp,...
例如:C ++,Java,Python,PHP,Ruby,Erlang,Perl,Haskell,C# Cocoa,JavaScript,Node.js,Smalltalk,OCaml和Delphi等语言。 Thrift功能简介 在使用Thrift时,我们首先需要编写一个thrift文件。 这个文件是...
思维转储在浏览书籍时,此回购... Munkres拓扑的学习笔记。我解决方案 我的解决方案 。 我对SICP练习的解决方案。 在我的博客上查看有关SICP的。我尝试实现各种算法来解决。我的Daniele Turi的“类别理论讲义”笔记。
编程语言:复习说明编程语言:复习笔记为什么要进行函数式编程为什么选择HaskellHaskell-Windows上的安装和入门前往Haskell IDE for 学习资料了解Haskell
个人学习笔记与博文 Menu Tools Plugin css-plugin js-plugin react-plugin python-plugin Framework css-ui-framework react-ui-framework Notes JavaScript Python html & css 前端工程 NodeJS 基础 Express KOA ...
我们专注于与Haskell,Elm和Nix合作。关于我自2000年代中期以来,我一直在进行编程,并从编写IRC脚本和调整论坛软件开始。 我最喜欢的编程语言是 ,我最喜欢的编程语言是 。 我认为静态类型的函数式编程可提高开发...
用于 Idris 的实验性 Google Go 后端这样做的动机我想改进我的 Haskell 和 Idris,并学习 Go ???一些功能/好处与 Go 以及通过 cgo 与 C 轻松互操作UTF-8 支持来自 Go(进入 Idris)支持的回调还没有调整,性能...
想象一下,您正在工作或正在学习许多不同的技术,我的情况,有罪!!! 或我们中许多使用NodeJS , React , C# , Ruby , PHP甚至Haskell (我几天前使用的是\ o /,或者例如,您只想在笔记本电脑或PC中运行一些...
您想学习描述符协议如何实现魔术方法调用,您可以通过将恶意代码插入超类来劫持,从而使调用C3线性化图的方法破坏竞争对手的代码! 好吧,如果您出于正确的原因阅读本笔记本,那么您将成为认证的Python Pro! 如果...