`
xxi
  • 浏览: 67046 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

Haskell 学习笔记(2)

阅读更多
新学了些东西记录下来
=====================元组============================
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笔记本》是基于Jupyter Notebook的Haskell学习资源,改编自经典的Haskell教程《Learn You a Haskell for Great Good!》。这个项目旨在为Haskell初学者提供一个交互式的学习环境,通过Jupyter ...

    Haskell Notes For Professionals

    Haskell是一种纯函数式编程语言,它拥有强大的类型系统和懒惰求值的特点。在我们深入Haskell的学习过程中,可以从...这本笔记形式的教程在为程序员提供速查和易读性的同时,也传达了Haskell作为一门语言的深度和广度。

    Go语言学习笔记

    在"Go语言学习笔记"中,我们可以期待深入理解以下几个关键知识点: 1. **基础语法**:Go语言的基础语法相对直观,包括变量声明、常量、数据类型(如整型、浮点型、字符串、布尔型、数组、切片、映射、结构体等)、...

    haskell-concepts-mindmap:学习haskell笔记

    这份“Haskell 概念思维导图”笔记,旨在通过思维导图的形式,帮助我们更清晰地理解和掌握 Haskell 的核心概念。 1. **纯函数编程** - 纯函数没有副作用,相同的输入总是得到相同的结果,这使得代码易于测试和理解...

    Python-IHaskellIPython的一个Haskell内核

    10. **学习资源**:对于想要学习或探索Haskell的用户,IHaskell提供了一个很好的起点,因为它降低了进入Haskell的门槛,同时保持了Haskell的严谨性和效率。 总之,IHaskell是Haskell开发者的一个宝贵工具,它通过...

    haskell-mooc:Haskell MOOC赫尔辛基大学

    2. **Haskell语法**:学习Haskell的语法结构,包括类型定义、函数定义、导入和导出模块等。 3. **类型系统**:深入理解Haskell的静态类型系统,包括类型推导和类型类。 4. **lazy evaluation**:探索惰性求值如何...

    HaskellNotes:Haskell 笔记,尤其是关于如何创建新库

    这些是我关于如何使用 github 和 cabal 创建新的 Haskell 库的笔记。重要链接阴谋集团指南: : Github 降价帮助: : Haddock 用户指南: : 初始化 Cabal 您只需为每个系统执行一次此操作。 以下所有步骤都应在您的...

    haskell-programming:“从第一原理开始的Haskell编程”一书的练习笔记和解决方案

    2. **类型系统**:Haskell的静态类型系统非常强大,它能够在编译时发现许多潜在的错误。类型推导使得程序员通常不需要显式地写出类型声明,但理解类型系统对于编写高效和可靠的代码至关重要。 3. **惰性求值**:...

    haskelling:学习Haskell的个人资料库

    "haskelling:学习Haskell的个人资料库"显然是一个专注于Haskell编程的学习资源集合,可能包含了教程、代码示例、笔记和其他相关材料。这个资料库可能是某位开发者在学习Haskell的过程中积累的知识宝库,旨在帮助其他...

    haskell-cs194:Haskell 通过 http 播放

    文件名称列表"haskell-cs194-master"表明这是一个课程的主分支,可能包含不同章节或阶段的材料,如源代码示例、笔记、阅读材料等。在学习过程中,学生可以通过这些文件逐步学习和完成课程中的各个任务,从而提高...

    demo-emacs-haskell:在Haskell项目中使用Emacs的教程

    8. **Org-Babel**:Emacs的Org模式可以用来组织笔记和代码,Org-Babel支持直接在Org文件中运行Haskell代码,非常适合学习和教学。 9. **Emacs Lisp编程**:为了进一步定制你的Haskell开发环境,你可能需要学习一些...

    haskell-do::pencil2:-Haskell代码编辑器专注于交互式开发

    4. **Haskell Notebook**:学习如何使用类似Notebook的界面来组织和执行Haskell代码,这可能涉及到Markdown格式的笔记、代码单元格和结果可视化。 5. **源代码管理**:了解如何浏览和理解开源项目的源代码结构,以及...

    haskell-eXchange-2015

    压缩包中的文件“haskell-eXchange-2015-master”可能包含了当年大会上的示例代码、幻灯片或者笔记,供参会者进一步学习和理解Haskell的实际应用。通过研究这些材料,开发者可以深化对Haskell的理解,学习如何在实际...

    Fundamental-Haskell:基本的Haskell书,以简洁的方式阐述了Haskell,类别理论和相关领域。 百科全书的意义。 禅宗禅般的理解冥想。 用于快速或记忆曲线间隔的重复学习

    Org-Mode则是Emacs中的一个强大组织和笔记系统,支持任务管理、时间追踪和文档创作,与Haskell结合使用可以极大地提高编程效率和学习效果。 此外,书中的“dictionary-learning”概念指的是利用字典或词汇表来辅助...

    Haskell_sugoi

    这个名为"Haskell_sugoi"的项目,就是基于这本书的学习笔记,旨在帮助读者深入理解和应用Haskell。 一、Haskell基础概念 1. 函数式编程:与传统的命令式编程不同,函数式编程强调通过数学函数来解决问题,避免了副...

    XMPP学习入门笔记

    本篇学习笔记汇总了XMPP的基本概念以及多种编程语言下的客户端库介绍,旨在帮助读者快速了解并上手XMPP技术。XMPP作为一种强大的即时通讯协议,不仅具备高度的可扩展性,还支持多种编程语言。这使得开发者可以根据...

    Learning-haskell:主要是胡言乱语,不要理会它

    在这个"Learning-haskell"的学习资料中,虽然标题暗示可能是作者的个人笔记或者随意的探索,但Haskell的学习内容却是值得深入探讨的。 首先,让我们了解一下Haskell的基础知识。Haskell是一种惰性求值的语言,这...

    很棒的笔记:个人学习笔记-今天我学习了(TIL)

    很棒的笔记 _ _ _____ ___ ___ _ __ ___ __... 个人学习笔记-很棒的自我笔记 样品 C 用指针实现通用变量 void * lsearch ( void *key, void *base, int n, int elemSize, int (*cmpfn)( void *, void *) ) { f

    Action-Haskell-Analysis:haskell 数据分析研究小组

    Action-Haskell-分析这是你... 布赖恩赫特的 Monad 教程4/4/14 读写 JSON,使用 Haskell 数据结构1、2、12MWF早晨早餐桌编码器。 喜欢健身房,但有代码和咖啡。 4/18/14 数字和字符串操作3、7、8 5/2/14 可视化数据,将

    orgmode:Haskell的组织模式解析和生成库

    2. **生成Orgmode文件**:与解析相反,该库也支持从Haskell数据结构生成Orgmode格式的文本。这使得开发人员能够在Haskell程序中构建和修改Orgmode文档,然后导出为可读性强、结构清晰的文本文件。 3. **扩展和...

Global site tag (gtag.js) - Google Analytics