Real World Haskell - Chapter 1. Getting Started

relay_subgraph_partition_one_slide.pptx 立即下载

 

 

 

 

Chapter 1. Getting Started

 

 

GHC 有三个主要components:

 

ghc

产生native code 的编译器

 

ghci

 

交互式解释器及调试器

 

runghc

将Haskell 程序作为脚本运行而无需编译

 

 

Getting Started with ghci, the Interpreter

 

“Prelude”提示符表示标准库已经加载并可以使用了。

 

打印帮助的命令“:?”

 

改变提示符

:set prompt "ghci> "

 

加载模块

:module + Data.Ratio

现在可以使用比例数了(或称有理数)

 

 

Basic Interaction: Using ghci as a Calculator

 

 

ghci 可以做为一个桌面计算器

 

 

Simple Arithmetic

 

infix form

 

ghci> 2 + 2

4

ghci> 31337 * 101

3165037

ghci> 7.0 / 2.0

3.5

 

Prefix form 必须确保操作符在括号里面

 

ghci> 2 + 2

4

ghci> (+) 2 2

4

 

Haskell 支持整数和浮点数,整数可以任意大

 

ghci> 313 ^ 15

27112218957718876716220410905036741257

 


 

An Arithmetic Quirk: Writing Negative Numbers

 

负数通常要用括号“()”括起来

 

ghci> -3

-3

 

这个例子中我们写的并不是“-3”这个数,而是一个operator – 操作符作用于数字3。“-”操作符是Haskell 中唯一的一个unary operator,不可以将它与infix operators 混在一起:

 

ghci> 2 + -3  --> 发生错误

 

正确的写法:

 

ghci> 2 + (-3)

-1

ghci> 3 + (-(13 * 37))

-478

 

Haskell 将“*-”视为单个操作符

 

ghci> 2*-3 -->出错

 

应该这样写:ghci> 2*(-3)

 

对负数的这些处理似乎是让人讨厌的,但这是因为Haskell允许在任何时侯创建新的操作符。

 


 

Boolean Logic, Operators, and Value Comparisons

 

Haskell 的布尔值是True 和 False。“&&”是“and”,“||”是“or”

 

ghci> True && False

False

ghci> False || True

True

 

Haskell 中零不是false,非零不是true

 

等于:“==”

小于“<”

大于等于“>=”

 

不等于运算符“/=”

 

ghci> 2 /= 3

True

 

逻辑非运算符“not”

 

ghci> not True

False

 


 

Operator Precedence and Associativity

 

查看运算符的优先级

 

:info (+)  -->infixl 6 +

 

infixl 6 + 表示优级级是6,优先级中1 最小,9 最大。

 

 

Infixl 表示运行符是左结合的,infixr 表示运算符是右结合的

 

:info (^)  -->infixr 8 ^

 

 

Undefined Values, and Introducing Variables

 

预加载的标准库只定了Pi 这一个常量值。

 

let 语法只是ghci 支持的,不是普通Haskell 程序支持的

let e = exp 1  --> 定义欧位常数

 

“^”和“**”两个乘方运算符的区别

 

“^”只能以整数作为指数,而“**”,能以浮点数作为指数。

 

(e ** pi) – pi -->19.99909997918947

 


 

Dealing with Precedence and Associativity Rules

 

表达式中尽量多用括号。

 

 

Command-Line Editing in ghci

 

略

 

 

Lists

 

list 列表的写法

 

[1, 2, 3]  -- 注意了,未尾不能有多余的逗号

 

列表可以任意长

 

[] –空列表

["foo", "bar", "baz", "quux", "fnord", "xyzzy"]

 

列表的元素必须有相同的类型

 

列表的补齐运算符“..”(enumeration notation)

 

[1..10] -->[1,2,3,4,5,6,7,8,9,10]

 

这个符号对文本类型无效

 


 

先写前两项 + “..” + 最后一项会按前面的“增量”补齐列表

 

[1.0,1.25..2.0] --> [1.0,1.25,1.5,1.75,2.0]

[1,4..15] --> [1,4,7,10,13]

[10,9..1] --> [10,9,8,7,6,5,4,3,2,1]

 

 

Operators on Lists

 

连接两个列表的运算符“++”

 

[3,1,3] ++ [3,7]            --> [3,1,3,3,7]

[] ++ [False,True] ++ [True]  --> [False,True,True]

 

在表的前端添加一个元素的运算符“:”

 

1 : [2,3] --> [1,2,3]

1 : [] --> [1]

 

“:” 的前面必须是一个元素,后面必须是一个列表, [1,2]:3 这种写法是错误的。

 

 

Strings and Characters

 

Haskell 中,string 是字符的列表。

 

"This is a string."

 

打印字符串的函数putStrLn

 

putStrLn "Here's a newline -->/n<-- See?"

--> Here's a newline -->

--> <-- See?


 

‘a’ 是一个char,”a” 是一个list

 

string 只是字符的列表

 

let a = [‘h’,’i’]

a == “hi” --> true

 

“”””是“[]”的另一种写法

 

"" == []  -->True

 

list 的运算符全都可以用于string

 

'a':"bc"            --> "abc"

"foo" ++ "bar" --> "foobar"

 

注意:”a” 是列表,’a’ 只是一个char。

 


 

First Steps with Types

 

整数(Integer) 是可以任意大的,只和系统的内存大小有关

 

类型名以大写字母开头,变量名以小写字母开头

 

:set 命令可以改变ghci 的默入行为

 

用“type”命令打印类型信息

 

:type 'a'

 

让ghci显示类型信息

:set +t  -- 这是逆命令:unset +t

'c'

--> 'c'

--> it :: Char  -- 其中的it 就代表前面的变量,而且可以在后面使用。(只对ghci 有效)

 

“xx :: type”表示xx 拥有类型type

 

整数(Integer) 是可以任意大的,只和系统的内存大小有关。

 

比例数的写法“a%b”

 

:m +Data.Ratio  --  :m 是:module 的缩写

11 % 29

 


 

A Simple Program

 

打印文本文件的行数

 

-- a.hs

main = interact wordCount

       where wordCount input = show (length (lines input)) ++ "/n"

 

-- a.txt

a small program

that counts the number of lines

in its input.

 

runghc a <a.txt

--> 3

 

注意:代码中的缩进是必须的。

 

 

triton-inference-server-ge-backend 新版本特性 v2.3.0 支持对全局、session、graph 的options进行添加,从而进一步调优模型,相关案例请参考 性能调优方法论。 支持采用分档模式将符合条件模型转化为静态图,提高吞吐性能。 补充如何采用分档模式+锁核+调整精度,进一步提高性能。 在AscendHub下载镜像时需确认好版本,若使用旧版本镜像,需要手工下载源码编译生成新的backend后才能支持新特性。 版本特性 v2.2.0 支持从onnx文件读取模型输入输出信息, config中若无指定input,output,将会自动从文件中读取; 调整动态图在多实例下使用多Session方式,提高并发吞吐(显存占用会增高); 支持动态batch场景小batch动态合并特性,配合多Session,提高吞吐; 补充调优方法论以及cnclip模型的最佳实践; 支持多模型特性,可支持同时拉起多个模型,提高显存利用率; 支持非0轴动态shape场景; 支持TensorFlow的pb文件。 立即下载

相关推荐

2007-2025年36家商业银行绿色信贷余额数据(2025年无缺失)

1、指标覆盖区间为2007年至2025年 2、数据取自各银行年度报告及社会责任报告 3、核心指标为绿色信贷余额 4、涉及银行包括:苏农银行、中国银行、紫金银行、杭州银行、华夏银行、邮储银行、青岛银行、兴业银行、苏州银行、农业银行、宁波银行、上海银行、江阴银行、招商银行、长沙银行、北京银行、无锡银行、民生银行、浙商银行、常熟银行、成都银行、工商银行、郑州银行、光大银行、南京银行、建设银行、浦发银行、贵阳银行、渝农商行、西安银行、交通银行、江苏银行、中信银行、张家港行、平安银行、青农商行

Real World Haskell - Chapter 7. I/O

<br /><br /><br /><br /> <br />Chapter 7. I/O<br /> <br />使用<- 从IO 获取输入,使用let 从pure code 获取输入。<br /> <br />pure code 就是相同的输入返回相同的输出,并且没有side effects 的代码。在Haskell 中只有I/O actions 不遵循这一规则。<br /> <br /> <br />严格分隔pure code 和非pure cod 有利于编译器自动优化和并行化。<br /> <br

1247

2019-2026年 中国分行业进出口数据 xlsx

数据整理中国各细分行业海关进出口数据,包括中国对各个国家进口、出口数据,中国各个行业进出口数据,各国贸易数据是了解每个国家市场的最基础和重要信息。数据非面板数据,时间、行业分类有缺失。 标 日期 采购商国家/地区 供应商国家/地区 采购商 供应商 采购商地址 供应商地址 通知人 通知人地址 制造商 原产国 目的国 起运港 目的港 HS编码 产品描述 唛头 数量 数量单位 重量 金额($) 单号 集装箱号 品牌

Real World Haskell - Chapter 5. Writing a Library: Working with JSON

<br /> <br /> <br /> <br /> <br />Chapter 5. Writing a Library: Working with JSON Data<br /> <br />A Whirlwind Tour of JSON<br /> <br />本章将开发一个小的,但完整的Haskell 库。这个库以JSON 格式(JavaScript Object Notation)来操作和序列化数据。<br /> <br />Representing JSON Data in Haskell<

715

后端开发 Docker4.99.0 AppleSilicon 苹果芯片 Mac 安装包

本资源为 Docker Desktop 4.99.0 苹果芯片(Apple Silicon)专用安装包,原生适配 M 系列 Mac,可快速搭建本地容器开发环境,支持镜像拉取、容器编排、项目打包部署。适合后端开发、运维、全栈开发者,用于本地微服务、测试环境、项目容器化开发。

milvus-v2.6.25镜像文件

milvus-v2.6.25镜像文件

Real World Haskell - Chapter 6. Using Typeclasses

<br /> <br /> <br /> <br /> <br />Chapter 6. Using Typeclasses<br /> <br />用class 声明Typeclass 就是声明一组函数。<br /> <br />The Need for Typeclasses<br /> <br />Color 相等测试(后面有改进版)<br /> <br />data Color = Red | Green | Blue<br /> <br />colorEq :: Color -> Color ->

701

医学信息影像AI临床采纳的责任边界研究:基于场景选点与流程嵌入的分步实施路径

内容概要:本文以“影像人工智能(CAD)的临床采纳与责任边界”为核心议题,指出当前影像AI的发展瓶颈已从技术准确性转向“谁负责、怎么用”的机制与治理问题。通过文献研究与政策文本分析,文章系统梳理了CAD的应用场景与效果、临床采纳障碍及责任边界划分三大问题,揭示出“假阳性导致医生信任下降、责任归属不清、采购与使用脱节”三重瓶颈相互强化的闭环结构,并提出“场景选点—试用验证—责任规则先行—流程嵌入”的分步递进式建设路径,强调需通过机制闭环实现技术真正落地。; 适合人群:从事医疗信息化管理、医学人工智能研究、医院运营管理及相关政策制定的专业人员,以及医学信息学、卫生管理专业的高年级本科生与研究生。; 使用场景及目标:①用于医疗机构评估影像AI引入的可行性与实施路径,避免资源错配;②为政策制定者提供优化考核机制与责任界定的理论依据;③帮助AI厂商理解临床真实需求,提升产品与流程的契合度;④作为学术研究框架,支持对技术采纳与治理机制的深入探讨。; 阅读建议:本文构建了“现状—机制—治理”三层分析框架,建议读者结合自身角色聚焦不同章节:管理者重点关注第五章路径设计,研究者关注第三章文献述评与第六章研究展望,实施者关注第四章瓶颈分析与实施保障。阅读时应特别注意概念的操作化定义与证据等级区分,避免将理论推导误作实证结论,并在应用时结合本地实际进行裁剪与验证。

Real World Haskell - Chapter 8. Efficient File Processing, Regular Expressions, and Filename

<br /> <br /> <br /> <br />Chapter 8. Efficient File Processing, Regular Expressions, and Filename<br />  Matching<br /> <br />Efficient File Processing<br /> <br />用String 来进行I/O 操作性能很糟糕<br /> <br />-- in.txt<br />{-<br />10<br />11<br />12<br />-}<br />m

650

A股分钟行情数据,涵盖股票、ETF、可转债及指数 每条记录包含交易日期、具体时间、证券代码、证券简称、开盘价、最高价、最低价、收盘价、成交量、成交额 数据为日内分钟频率,逐分钟记录价格变动与成交信息

A股分钟行情数据,涵盖股票、ETF、可转债及指数。每条记录包含交易日期、具体时间、证券代码、证券简称、开盘价、最高价、最低价、收盘价、成交量、成交额。数据为日内分钟频率,逐分钟记录价格变动与成交信息,按交易日分割存储,历史分钟K线保留完整。 数据源:CMES金融数据库

AD元件库构建及维护之——DbLib公共元件库的使用教程

AD元件库构建及维护之——DbLib元件库的使用教程

qq_43105486的博客 2万+

Real World Haskell - Chapter 4. Functional Programming

<br /> <br /> <br /> <br /> <br />Chapter 4. Functional Programming<br /> <br />A Simple Command-Line Framework<br /> <br /> <br />Haskell 中所有函数都仅接受一个参数。如果一个函数需要多个参数,则每给它一个参数,它就返回一个partial 函数。<br /> <br />组合使用库函数,如map,take,filter 来代替尾部递归和匿名函数,可以使得代码更可读,加快编

623

音频测试专题

麦克风与扬声器单体测试指标及整机性能测试概述 麦克风测试指标包括频率响应、灵敏度、指向性等10项关键参数,用于评估声音捕捉和信号转换性能。扬声器测试包含频率响应、灵敏度等12项指标,涉及声学特性和物理参数。整机性能测试覆盖安静、嘈杂和正常三种环境,重点检测麦克风底噪、清晰度、扬声器音量及通话质量等12项功能指标。两类单体测试与整机测试共同构成完整的音频设备质量评估体系,确保产品在不同场景下的性能表现。

weixin_52640906的博客 1317

Real World Haskell - Chapter 10. Code Case Study: Parsing a Binary Data Format

<br /> <br /> <br /> <br /> <br />Chapter 10. Code Case Study: Parsing a Binary Data Format<br /> <br />Grayscale Files<br /> <br />(==>) 函数会创建一个闭包,如“(+5)”就是一个闭包。<br /> <br />functor 可以使得我们的代码更tidy,更expressive 。<br />functor 可以避免去复制代码。<br />functor 有助于避免代码

553

软件项目管理期末复习(看这一篇就够了)

软件项目管理考试复习 🔶🔶🔶🔶🔶加了🔶的是考点 第一章软件项目管理概述 1.1.1项目及其特征 项目定义:🔶 项目就是为了创造一个唯一的产品或提供一个唯一的服务而进行的临时性的努力; 是以一套独特而互相联系的任务为前提,有效地利用资源,在一段时间内满足一系列特定目标的多项相关工作的总称。 日常运作和项目的区别: 项目是一次性的,而日常运作是重复进行的。 项目是以目标为导向的,日常运作是通过效率和有效性体现的。 项目是通过项目经理及其团队工作完成的,日常运作是职能式的线性管理。 项目存在大量的变更管理,

qq_50886857的博客 3万+

Pluto SDR新手避坑指南:从环境配置到第一个MATLAB收发程序(附完整代码)

本文为Pluto SDR新手提供全面的避坑指南,从硬件连接到MATLAB环境配置,再到第一个信号收发程序的实现。详细介绍了驱动安装、常见问题排查以及关键参数设置,帮助用户快速上手软件定义无线电(SDR)技术,并附有完整代码示例。

weixin_33168937的博客 325

Real World Haskell - Chapter 3. Defining Types, Streamlining Functions

<br /> <br /> <br /> <br /> <br />Chapter 3. Defining Types, Streamlining Functions<br /> <br /> <br />使用“data”自定义新类型<br /> <br />-- book.hs<br />data BookInfo = Book Int String [String]<br />              deriving (Show)<br /> <br />mybook = Book 97801350

543

毕设帮扶:从0到1搭建基于YOLOv5的打架斗殴检测系统——助你搞定深度学习毕设

做完这个毕设,你已经掌握了从数据准备到模型部署、界面开发的全流程。把模型部署到边缘设备(如安防摄像头的嵌入式系统)上,实现本地化实时检测与报警;加入行为严重程度分析(如轻微推搡 vs 严重斗殴)、涉事人员数量统计,让系统从“检测”升级为“智能安防决策”;尝试融合声音、红外等多模态数据,打造全方位的暴力事件监测系统。按照这个教程一步步做,你的毕设肯定能做得很扎实。要是过程中遇到啥问题,别担心,慢慢梳理或者咱们一起聊聊,一定能把这个毕设做成你满意的作品。

LXY_LOVE36的博客 120

Real World Haskell - Preface

<br /> <br /> <br /> <br /> <br />Preface<br /> <br /> <br />Have We Got a Deal for You!<br /> <br />Haskell 是一门很有深度的语言;我们认为学习Haskell 是一种极有价值的体验。我们主要关注三个方面。第一是新颖:我们鼓励(invite)你从一种不同的而且有价值的观点思考编程。第二是性能:我们将向你展示如何编写简短,快速并且安全的软件。最后,我们给你准备了许多乐趣:应用漂亮的编程技术去解决真实问题。

543

OpenSpec 完全指南 config.yaml文件

不管是项目内还是全局存放,自定义工作流都要遵守以下规则,否则会导致OpenSpec无法识别,新手一定要记牢:一个文件夹 = 一个工作流:工作流文件夹的名称,就是中schema字段要填写的名称;每个工作流文件夹必须包含:这是工作流的核心定义文件,没有它,OpenSpec无法识别这个工作流;模板文件统一放templates/目录:如果需要自定义生成文件的模板(比如统一的提案模板、任务模板),就放在工作流文件夹下的templates/里,OpenSpec会自动识别;

h a 6 6 6 c k 为 你解决复杂难题! 1419

FM20S用户手册--Linux系统启动卡制作及系统固化

评估板出厂时,默认提供一张配套的Micro SD卡,此卡为可正常使用的Linux系统 启动卡。评估板断电,将Linux系统启动卡插入评估板Micro SD卡槽,根据评估底板丝印将 启动方式选择拨码开关拨为1010(1-4).此档位为Micro SD启动模式。使用Linux 系统启动卡启动系统时,将使用此目录的BOOTbn文件启动FSBL和U-Boot。Linux系统启动卡制作时,已将固化系统的脚本文件mkemmcboot.sh拷贝至Linux系 统启动卡文件系统的"/opt/tools/"目录下。

创龙,嵌入式一体化解决方案商 302

Real World Haskell - Chapter 9. I/O Case Study: A Library for Searching the Filesystem

<br /> <br /> <br /> <br /> <br />Chapter 9. I/O Case Study: A Library for Searching the Filesystem<br /> <br />The find Command<br /> <br />Haskell 中参数位置非常重要,如果把参数放在了错误的位置上就会失去partial application 的gives 了。<br /> <br />给定一个目录的列表,find 命令递归的搜索每一个目录,并打印所有匹配的文

498

继电保护原理1.2-反时限过流保护

反时限过流保护

让你爱上电路设计 1万+

Real World Haskell - Chapter 2. Types and Functions

<br /> <br /> <br /> <br /> <br />Chapter 2. Types and Functions<br /> <br /> <br />Why Care About Types?<br /> <br />略<br /> <br />Haskell’s Type System<br /> <br />Haskell 的类型是静态,强类型,能够自动推断。<br /> <br />Static Types<br /> <br />静态类型的意思是编译器在编译时知道所有值和表达式的类

438

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Real World Haskell - Chapter 11. Testing and Quality Assurance

<br /> <br /> <br /> <br /> <br />Testing Case Study: Specifying a Pretty Printer<br /> <br />“(<>)”是连接两个Doc 的函数,加上fold 就变成连接多个Doc 的函数<br /> <br />Generating Test Data<br /> <br />data Doc = Empty<br />         | Char Char<br />         | Text String<br />

409

假人有限元模型

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

上一篇: Real World Haskell - Preface
下一篇: Real World Haskell - Chapter 2. Types and Functions
蓝色歌谣
博客等级 码龄19年 55粉丝 126原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值