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

Altium AD20的PCB板框绘制、定义板子形状、重新设置原点、放置尺寸标注

AD20的板框绘制与以前的版本不同,以前板框是在KeepOut层,而在AD20中没有这个层,绘制板框需要到机械层Mechanical1。 板框大小评估 首先进行板框大小评估。 工具 - 器件摆放 - 在矩形区域摆放。 之后通过鼠标框选矩形区域,元件会自动按照框选的范围进行摆放。这个操作可以重复多次,最后大致得出需要的板框尺寸。确定好后右键。 板框绘制,重新定义板子形状 点击下方的 Mechanical1,切换到机械层。放置线条,根据元件摆放来绘制PCB大致的形状,将元件完全包裹。

Mark_md的博客 10万+

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

三相逆变器拓扑结构的分析及应用场景

三相逆变器是电力电子领域中广泛应用的一种设备,用于将直流电转换为交流电。不同的拓扑结构在性能、成本、复杂度和应用领域上存在差异。小编将在本文中将进一步拓展对三相逆变器拓扑结构的分析,并探讨其适用的应用场景。

道合顺的博客 2235

Dynamics 365从入门到精通:一站式掌握微软智能商业应用平台

很多新手学Dynamics 365时,容易陷入“死记功能”的误区,其实这款平台的核心价值不是“功能多全”,而是“能适配企业业务流程,通过生态集成提升效率”。先从具体业务场景入手,理解每个功能的实际价值;再通过生态集成拓展系统能力;最后通过开发实现定制化,满足企业的特殊需求。按照这个思路,新手不用害怕复杂,一步步落地实战,3个月就能从“入门”到“能独立负责项目”。如果在学习过程中遇到具体问题(比如部署报错、数据迁移失败),欢迎在评论区留言,我会结合实战经验帮你解答!

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1040

Haskell语言的学习路线

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

2401_90032167的博客 2515

MATLAB出现”警告: 名称不存在或不是目录“的解决方案

MATLAB出现 警告: 名称不存在或不是目录 的解决方案1. 出现错误2. 问题解释3. 解决方法4. 特殊情况5. 问题解决6. 多多点赞交流 1. 出现错误 打开MATLAB突然发现,出现下面的错误: 提示我们不存在这样的路径。 2. 问题解释 这样的错误很明显,我们曾经在预设路径中添加了这个文件夹。 在某种情况下,我们把它删除了,现在MATLAB找不到它了。 (这里我在桌面上添加了新建文件夹,然后将其添加到MATLAB的搜索路径中。之后把新建文件夹删除了,所以就会出现这样的报错) 3. 解决方法

qq_18820125的博客 5万+

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

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

gitblog_01125的博客 967

BMS短路测试避坑指南:从炸管到稳定,我是如何搞定MOS管和TVS的

本文详细记录了BMS短路测试中MOS管和TVS的优化过程,从驱动电阻调整、PCB寄生参数控制到TVS选配策略,提供了一套实用的调试方法论。通过实战案例解析,帮助工程师避免常见陷阱,实现稳定可靠的短路测试性能。

weixin_30652897的博客 140

TMC5130/TMC5160步进电机驱动芯片深度解析与工程实践

步进电机驱动芯片是精密运动控制系统的物理执行核心,其性能直接决定定位精度、运行噪声与系统鲁棒性。基于电流闭环控制与电压前馈调制的混合驱动原理,现代智能驱动芯片如TMC51X0系列实现了微步插补、堵转检测和片上运动规划等关键技术突破。这类芯片通过SPI寄存器级配置实现StealthChop静音驱动与SpreadCycle高动态响应模式的无缝切换,在3D打印、CNC、机器人关节等场景中显著提升能效比与控制带宽。本文围绕TMC5130与TMC5160的硬件架构差异、寄存器操作时序、驱动模式物理机制及FreeRTO

weixin_35797963的博客 409

Haskell语言的机器学习

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

2501_90932917的博客 930

[TI板]MSPM0G3507——keil环境配置+烧录配置+vscode配置+空工程迁移+点灯+芯片解锁教程

本文介绍了MSPM0G3507开发环境的配置与烧录方法。主要内容包括:1)下载安装芯片支持包和SDK开发工具;2)通过串口或DAPLink两种方式实现程序烧录,详细说明了UniFlash软件的使用步骤和常见问题解决方法;3)简要提及工程迁移和LED点灯等基础操作。文章提供了完整的开发环境搭建指南,涵盖从软件安装到实际烧录的全过程,并附有相关工具下载链接和操作截图,帮助开发者快速上手MSPM0G3507开发。

qq_23220445的博客 1万+

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

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

gitblog_00750的博客 740

SpringBoot项目启动后ShardingSphere5.0首次SQL查询慢?这个预热技巧帮你搞定

本文针对SpringBoot项目集成ShardingSphere 5.0后首次SQL查询慢的问题,深入剖析了其根源在于SQL解析引擎的懒加载与缓存初始化。文章提供了三种有效的预热技巧,包括精准的SQL解析引擎预热、简单查询触发全链路预热以及可配置的生产级方案,帮助开发者将初始化成本提前至应用启动阶段,从而消除性能毛刺,提升用户体验与系统稳定性。

chair的专栏 1062

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

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

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

gitblog_00537的博客 497

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

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

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

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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、付费专栏及课程。

余额充值