3天学习haskell---haskell第一天

Haskell入门 一、 什么是haskell? haskell是一种现代的、标准的、非严格的、纯功能的编程语言。它提供了上面勾勒出的所有功能,包括多态类型、惰性评估和高阶函数。它还具有一种创新的类型系统,支持系统化的过载和模块系统。它专门设计用于处理从数值到符号的广泛应用。为此,haskell具有富有表现力的语法和丰富的内置数据类型,包括任意精度整数和理性, 以及更传统的整数、浮点和布尔类型。有很多编译器和解释器可用。全部免费。在计算机上安装haskell的推荐方式是通过haskell平台。 二、为什么要使用haskell? 阅读详情

一 表达式和基本类型

这个类似于命令式语言

二函数

函数是函数式编程的一等公民。

这部分最重要的是递归函数。

1基本递归

例如,求阶乘

代码:fact x=if x==0 then 1 else fact(x-1)*x

2 模式匹配(实现递归)

fact 0=1

fact x=x*fact(x-1)

3 哨兵表达式(为了改变模式匹配的顺序)

fact x

  |x>1 =x*fact(x-1)

  |otherwise =1

三 元组和列表

元组,例如(x,y,z)

列表 例如[int,int,int] [1..4] [10,9.5..4]

列表的操作有:head,tail,zip(合并) ,take (取前几项)

列表的生成:

1递归 h:t=[1,2,3]

2范围与组合 [1..4] [10,9.5..4]  take 5[0,2..]

3列表推导 let crew=["kirk","pp","james"]

[(a,b)|a<-crew,b<-crew,a|=b]


主要参考网站为:维基教科书 http://zh.wikibooks.org/wiki/Haskell

                             haskell中文社区

本文内容总结来源于《七周七语言》。

附课后题答案:

--4
func2 []=[]
func2 [h]=[h]
func2 (h:t)=(func2 t)++[h]

--5
color=["blue","black","white","yellow","red"]
func5=[(a,b)|a<-color,b<-color,a<b]

--6
list6=[1..12]
func6=[(a,b,a*b)|a<-list6,b<-list6,a<b]


--7
--a,b..e represent 5 states
list7=["red","blue","green"]
dif7 a b =if a==b then 0 else 1
find7=[(a,b,c,d,e)|a<-list7,b<-list7,c<-list7,d<-list7,e<-list7,dif7 a b==1,dif7 b d==1,dif7 a d==1,dif7 a b==1,dif7 a c==1,dif7 a e==1,dif7 c e==1,dif7 c d==1]

Haskell语言的语法 在Haskell中,变量的定义是通过简单的赋值实现的。haskellx = 5y = 10函数定义也同样简洁。haskellHaskell作为一门纯粹的函数式编程语言,以其强大的类型系统、惰性求值、高阶函数等特性,展示了函数式编程的魅力。尽管它在工业应用中的占比相对较小,但在数据分析、Web开发、区块链和教育等多个领域表现出色。随着编程语言和技术的不断发展,Haskell的应用场景也在不断扩展。对于追求高质量代码的开发者来说,学习并掌握Haskell无疑是一个值得投资的选择。 阅读详情

相关推荐

Haskell语言的物联网

Haskell是一门标准的、非严格的函数式编程语言,它以强类型和数学函数为基础,强调表达能力与维护性。Haskell作为一门强大的函数式编程语言,在物联网领域展现出独特的优势。其高抽象性、类型安全性以及并发处理能力,使得开发人员能够更高效地构建可靠的物联网应用。虽然Haskell在学习和工具支持上存在一些挑战,但随着物联网技术的不断发展,相信Haskell的应用将会越来越广泛。未来,借助Haskell构建的物联网系统将能够提供更加智能、高效的服务,推动智能化生活的实现。

2501_90571201的博客 831

恭喜下自己,终于收到 Real World Haskell 中文版的打印稿了

早晨一来公司,就看到工位上一个大大的邮报,看地址是清华出版社寄过来的,我就知道是它了。拆开后是将近10厘米后的一摞A4的打印纸。 毕竟是第一次看到自己的文字(虽说是翻译吧)变成白纸黑字,并可能很快被更多人看到,心中很是欣喜。 翻译这活属于费力不讨好,稿费可以忽略,板砖必然伺候。 ...

编程开发资料库 162

【智能体评测】BrowserUse:一款超越 Anthropic Computer Use 的开源智能体

本文将全面介绍 BrowserUse 的核心功能、配置与使用方法,以及通过多场景测试评估其性能。

surfirst的博客 4099

Haskell 几乎无痛苦上手指

<br />http://blog.youkuaiyun.com/albert_lee/archive/2010/04/10/5469933.aspx<br /> <br />from albert_lee<br /> <br />    Haskell 几乎无痛苦上手指 收藏<br /> <br />趁着自己重装Linux 虚拟机的机会,把安装 haskell 的过程记录一下,顺便帮那些还犹豫徘徊在haskell门外的读者入门。基本概念:Haskell : <br />是一门通用函数式语言,几

mjk的专栏 2691

固定时间收敛的控制器设计(基础知识)

针对控制系统的有限时间收敛和固定时间收敛给出一些常用定理。

qq_40241332的博客 1万+

自然语言处理:稀疏向量表示

稀疏向量表示是指运用特定的方法和技术,将数据(如文本、图像、信号等)转化为向量形式,且该向量具有大部分元素值为零,仅少数元素值非零的特征,以此来实现对数据的高效存储、处理和分析。

老赵爱学习的博客 1443

Haskell语言的学习路线

在 Haskell 中,函数是核心概念。haskell递归是 Haskell 中的一个重要概念,许多算法(如阶乘、斐波那契数列)可以通过递归来实现。haskellHaskell 作为一种优雅且强大的函数式编程语言,虽然学习曲线较陡,但其独特的编程思想能够极大地拓展编程者的思维方式。通过本文提供的学习路线,从基础知识到高级应用,读者可以逐步掌握 Haskell,从而提升自己的编程能力。无论你是刚接触编程的新手,还是有经验的开发者,Haskell 都是一个值得深入探索的领域。

2401_90032167的博客 2515

基础知识学习 -- qnx 系统

qnx os车载系统

求变,从思想开始 3873

haskell-vim与vim-hindent:打造完美Haskell自动缩进环境

Haskell作为一门优雅的函数式编程语言,其严格的缩进规则常常让新手望而生畏。**haskell-vim**作为专为Haskell开发的Vim插件,结合**vim-hindent**工具,能够为开发者提供智能、高效的自动缩进解决方案,让代码格式化不再成为负担。 ## 📋 为什么需要专门的Haskell缩进工具? Haskell的缩进不仅仅是代码风格问题,更是语法的一部分。错误的缩进可能导致

gitblog_01125的博客 967

AArch64 ARM64 寄存器介绍

除了上述通用寄存器,还有FPSR(浮点状态寄存器)和 FPCR(浮点控制寄存器)等。X29寄存器和X30寄存器在函数调用和堆栈帧的管理中扮演着关键角色。AArch64架构提供了31个通用寄存器,每个寄存器都可以用作64位X寄存器(X0~X30)或32位W寄存器(W0~W30)。使用X寄存器将导致64位的计算,使用W寄存器将导致32位的计算。EL0、EL1、EL2和EL3是AArch64架构中定义的四个特权级别(Exception Levels),用于支持不同的执行环境和特权级别。

lml435035844的博客 1万+

风险登记册vs问题日志:项目经理必须掌握的区别与应用

在项目管理的世界里,风险登记册和问题日志就像是项目经理的两个得力助手。我们的目的就是要搞清楚这两个助手各自的特点、区别以及如何在项目中好好使用它们。范围涵盖了项目从启动到结束的整个过程,无论是小项目还是大项目,都能从对这两个工具的正确使用中受益。我们先会用有趣的故事引出风险登记册和问题日志的概念,然后像给小学生讲故事一样解释它们是什么。接着分析它们之间的关系和区别,再用代码示例模拟它们在项目中的应用,之后介绍实际的应用场景、推荐相关工具和资源,探讨未来的发展趋势和挑战。

项目管理的博客 873

Haskell语言的机器学习

Haskell是一种纯函数式编程语言,诞生于1990年。纯函数式编程:Haskell中的函数是纯函数,即函数的输出仅依赖于输入,没有副作用。这使得代码更容易推理和测试。强类型系统:Haskell的类型系统非常强大,支持类型推断和类型类。这有助于在编译时捕获许多错误,提高代码的可靠性。惰性求值:Haskell采用惰性求值策略,即表达式只有在需要时才会被计算。这使得Haskell能够处理无限数据结构,并在某些情况下提高性能。高阶抽象:Haskell支持高阶函数和类型类,使得代码可以高度抽象和复用。

2501_90932917的博客 930

MTK平台Wi-Fi学习--wifi channel 通过国家码进行功率限制和wifi eFEM 基本配置和wifi Tx SEM问题

本文介绍了WiFi功率限制配置和eFEM硬件设置方法。在功率限制方面,通过国家码可针对不同信道设置功率上限,需在rlm_txpwr_init.h文件中配置信道和功率值(单位0.5dBm),WiFi6的HE_TB模式还可分RU设置。eFEM硬件配置需参考平台设计,注意VDET接口处理,首次使用建议提交HW/SW案例审核。软件配置需获取专用FEM包,包含NVRAM、GPIO等文件,按指导合并后版本才会切换为eFEM版本。

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 484

Haskell-in-Haskell:用Haskell实现Haskell的编译器

Haskell-in-Haskell:用Haskell实现Haskell的编译器 1. 项目基础介绍及主要编程语言 Haskell-in-Haskell 是一个开源项目,旨在用 Haskell 语言编写一个可理解的 Haskell 编译器。该项目通过实现 Haskell 的一 subsets 来展现编译器的内部工作原理,提供了一个深入了解 Haskell 编译过程的机会。项目的主要编程语言是 Ha...

gitblog_00750的博客 740

【无人机编队】基于matlab虚拟leader无人机编队仿真【含Matlab源码 3279期】

虚拟leader无人机编队仿真 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 837

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

7天学会Haskell:零基础到实战的完整指南

Haskell是一门功能强大的函数式编程语言,以其优雅的语法和强大的类型系统著称。本教程将带领你在7天内从零基础入门Haskell,掌握核心概念并完成实用项目。无论你是编程新手还是有经验的开发者,这份指南都能帮助你快速掌握这门独特的语言。 ## 🚀 为什么选择Haskell? Haskell作为纯函数式编程语言,提供了独特的编程范式和思维方式。它的强类型系统能在编译时捕获大部分错误,而惰性求

gitblog_00537的博客 497

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Haskell语言为什么值得你去学习

当我向一些新手推荐学习Haskell语言时,得到的反应通常是:“为什么要学Haskell?”,“这是一种实用的语言吗?”或者“这是一种我可以真正用的语言吗?”我的回答是明确的YES。 Haskell并不是我工作时的主要语言(我基本上是为嵌入式系统写C程序),但我仍然发现Haskell难以置信的有用。虽然我的工作从来不用Haskell,我仍然认为花时间去学习它是值得的。那么,为什么要学习Has

黄沙百战穿金甲,不破楼兰终不还。 1496

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Haskell语言的深度学习

Haskell是一种纯函数式编程语言,以其高度的抽象能力和强类型系统而闻名。惰性求值:Haskell采用惰性求值策略,只有在需要计算时才会进行计算,这使得它在处理无限数据结构时非常方便。强类型系统:Haskell的类型系统可以在编译时捕获许多错误,这有助于保证程序的正确性。高阶函数:Haskell允许将函数作为参数传递和返回,这使得代码更加灵活和简洁。强大的抽象能力:Haskell支持代数数据类型和类型类,这使得程序员能够定义更为复杂的结构和行为。

2501_91339134的博客 627

haskell-vim:终极Haskell与Cabal语法高亮与缩进解决方案

haskell-vim是一款专为Haskell开发者打造的Vim插件,提供了完整的Haskell与Cabal语法高亮和智能缩进功能。无论是编写复杂的Haskell函数还是管理Cabal项目配置,这款工具都能帮助你提升编码效率,减少语法错误,让代码编辑体验更加流畅。 ## 🚀 核心功能解析 ### 1. 精准的语法高亮系统 haskell-vim通过精心设计的语法规则,为Haskell代码提

gitblog_00772的博客 708

Haskell语言的区块链

Haskell是一种函数式编程语言,因其强大的表达能力和高阶抽象能力,成为许多领域的热门选择。与命令式语言相比,Haskell在并发性和并行性方面具有天然优势,因此在处理复杂的并发任务时表现出色。Haskell作为一种函数式编程语言,凭借其独特的特性,为区块链开发提供了强大的支持。从Cardano到Plutus的实例表明,Haskell在构建安全、高效的区块链平台中具有广泛的应用潜力。尽管在学习、性能优化和生态建设上还面临一些挑战,但随着社区的发展和工具链的完善,Haskell在区块链领域的前景将更加光明。

2501_90443612的博客 1467

Liquid Haskell 使用教程

Liquid Haskell 是一个用于 Haskell 编程语言的程序验证工具,允许通过使用细化类型(refinement types)来指定正确性属性。这些属性通过满足性模理论(SMT)求解器进行验证,该求解器符合 SMTLIB2 标准,例如 Z3 定理证明器。Liquid Haskell 的主要目标是帮助开发者编写更安全、更可靠的 Haskell 代码。 ## 2、项目快速启动 ###

gitblog_00889的博客 867
上一篇: 规约求和,使得相加次数最少
下一篇: 3天学习haskell---haskell第二天
crazyhacking
博客等级 码龄15年 299粉丝 148原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值