免费网站建设解决方案,办公宽带多少钱一年,开发工具都有什么,做分色找工作网站《Two Dozen Short Lessons in Haskell》#xff08;Copyright 1995, 1996, 1997 by Rex Page#xff0c;有人翻译为Haskell二十四学时教程#xff0c;该书如果不用于赢利#xff0c;可以任意发布#xff0c;但需要保留他们的copyright#xff09;这本书是学习 Ha…《Two Dozen Short Lessons in Haskell》Copyright © 1995, 1996, 1997 by Rex Page有人翻译为Haskell二十四学时教程该书如果不用于赢利可以任意发布但需要保留他们的copyright这本书是学习 Haskell的一套练习册共有2本一本是问题一本是答案分为24个章节。在这个站点有PDF文件。几年前刚开始学习Haskell的时候感觉前几章还可以看下去后面的内容越来越难以理解。现在对函数式编程有了一些了解后再来看这些题许多内容变得简单起来了。 初学Haskell之前一定要记住 把你以前学习面向过程的常规的编程语言如Pascal、C、Fortran等等统统忘在脑后函数式编程完全是不一样的编程模型用以前的术语和思维来理解函数式编程里的概念只会让你困惑和迷茫会严重地影响你的学习进度。 这个学习材料内容太多想把整书全面翻译下来非常困难只有通过练习题将一些知识点串起来详细学习Haskell还是先看其它一些入门书籍吧这本书配套着学学还是不错的。 第十章 私有定义----where从句 Haskell中的许多名字也称为变量像是数学方程中的变量variable一样。但与过程式编程完全不同在函数式编程里这个量当它定义了之后实际并不改变。 where从句把数学中的局部定义的概念直接用在编程语言中了。 在SQL查询语句中where只是一个条件表达式与haskell是不一样的。 1 Integral numbers are denoted in Haskell by a decimal numerals enclosed in quotation marks b decimal numerals — no quotation marks involved c decimal numerals with or without quotation marks d values of type String 2 The Haskell system, when interpreting scripts, represents numbers as a decimal numerals b binary numerals c hexadecimal numerals d however it likes — none of your business anyway 3 Encapsulation a prevents name clashes b prevents one software component from messing with the internal details of another c is one of the most important concepts in software engineering d all of the above 4 A where-clause in Haskell defines variables that a will be accessible from all where-clauses b take the name of the where-clause as a prefix c cannot be accessed outside the definition containing the clause d have strange names 5 In Haskell, the beginning and end of a definition is determined by a begin and end statements b matched sets of curly braces { } c indentation d however it likes — none of your business anyway 6 The intrinsic function foldr a is more generally applicable than foldr1 b takes more arguments than foldr1 c can accommodate an empty sequence as its last argument d all of the above 7 What value does the following command deliver? HASKELL DEFINITION • ct xs foldr addOne 0 xs HASKELL DEFINITION • where HASKELL DEFINITION • addOne x sum 1 sum HASKELL COMMAND • ct [1, 2, 3, 4] a 10, by computing 1(2(3(40))) b 4, by computing 1(1(1(10))) c 5, by computing 1(1(1(11))) d nothing — ct is not properly defined 答 案 在 下 面 1 b 5678是整数而5678”就是字符串在各种编程语言都是这样。 2 d Haskell内部如何表达整数是haskell编译器或解释器的内部机制不用关心也没有指出过。 3 d 封装可以防止名字冲突在软件工程中常用的一个概念可以防止与其它模块中的变量相混。 4 c 在where从句里的变量当然通常是存在于一个函数定义内的在这个函数定义内是可见的但在其它地方都不可访问。 5 c Haskell中的缩进是有含义的当缩进时表示前面的定义还没完。 当缩进回到了前面一个级别则表示当前的定义结束了开始一个新的定义。 6 d foldr1函数有2个参数而foldr有3个参数。 例如foldr1 op [w,x,y] w op (x op y) 对应于foldr op z [w,x,y] w op (x op (y op z)) 并且foldr op z [] [] foldr函数可以保证在空列表情况时也可以得到返回值。而foldr1在给空列表时出报错。 例如 foldr1 () [] 报错Exception: Prelude.foldr1: empty list 而foldr () 0 []会得到0 7 b 这个函数相当于统计元素的个数 《Two Dozen Short Lessons in Haskell》学习一Hello World 《Two Dozen Short Lessons in Haskell》学习二Definitions 《Two Dozen Short Lessons in Haskell》学习三How to Run Haskell Programs 《Two Dozen Short Lessons in Haskell》学习四List Comprehensions 《Two Dozen Short Lessons in Haskell》学习五Function Composition and Currying 《Two Dozen Short Lessons in Haskell》学习六Patterns of Computation – Composition, Folding, and Mapping 《Two Dozen Short Lessons in Haskell》学习七- Types 《Two Dozen Short Lessons in Haskell》学习八- Function Types, Classes, and Polymorphism 《Two Dozen Short Lessons in Haskell》学习九- Types of Curried Forms and Higher Order Functions 《Two Dozen Short Lessons in Haskell》学习十- Private Definitions — the where-clause 《Two Dozen Short Lessons in Haskell》学习十一- Tuples 《Two Dozen Short Lessons in Haskell》学习十二 数值相关的类 《Two Dozen Short Lessons in Haskell》学习十三迭代及重复的常规模式 《Two Dozen Short Lessons in Haskell》学习十四截断序列和惰性求值 《Two Dozen Short Lessons in Haskell》学习十五- Encapsulation — modules 《Two Dozen Short Lessons in Haskell》学习十六- Definitions with Alternatives 《Two Dozen Short Lessons in Haskell》学习十七 - 模块库 《Two Dozen Short Lessons in Haskell》学习十八 - 交互式键盘输入和屏幕输出 《Two Dozen Short Lessons in Haskell》学习十九) - 文件输入与输出 《Two Dozen Short Lessons in Haskell》学习二十- 分数 《Two Dozen Short Lessons in Haskell》学习二十一- 在形式参数中使用模式匹配 《Two Dozen Short Lessons in Haskell》学习二十二- 递归 第23章没有习题。 《Two Dozen Short Lessons in Haskell》二十四代数类型转载于:https://www.cnblogs.com/speeding/archive/2012/12/08/2807844.html