捣鼓Haskell
最近想学这门语言,于是做了一些准备工作,配置好一切后,打算玩一玩。
先扔一段官方简介:
Introduction
Haskell is a computer programming language. In particular, it is a polymorphically statically typed, lazy, purely functional language, quite different from most other programming languages. The language is named for Haskell Brooks Curry, whose work in mathematical logic serves as a foundation for functional languages. Haskell is based on the lambda calculus, hence the lambda we use as a logo.
Haskell 的好处(google翻译):
- 大大提高了程序员的工作效率(爱立信在使用电话软件的一组实验中使用Erlang,一种类似于Haskell的函数式编程语言测量了9到25之间的改进因子)。
- 更短,更清晰,更易维护的代码。
- 更少的错误,更高的可靠性。
- 程序员和语言之间较小的“语义鸿沟”。
- 交货时间更短。
Haskell是一种广泛的语言,适用于各种应用程序。它特别适用于需要高度可修改和可维护的程序。
软件产品的许多生命都花在规范, 设计和维护上,而不是编程中。函数式语言对于编写可以实际执行(因此经过测试和调试)的规范而言是极好的。这样的规范是最终程序的第一个原型。
程序也相对容易维护,因为代码更短,更清晰,副作用的严格控制消除了一大类无法预料的交互。
从上面了解介绍到Haskell是一种函数式语言,那么什么是函数式语言?了解函数式语言前,我先了解一点lambda演算及函数式编程的历史。
然后通过前面的一些资料,大概了解到函数式编程与以往C/Java等语言的最大不同之处在于,后者是命令式语言,他们必须按照指令一条一条的执行,一个程序中每一条指令都是不可缺少的。所以函数式编程是一种非冯诺依曼体系结构的编程方式。比较命令式,函数式更符合人的行为,函数式程序代码很直观,他们就像简明的数学表达式一样。
显然C++/python等的lambda表达式就是函数式的语法。
然后,一点自己体验GHCI命令行界面的记录:
按 ctrl + L 是清屏;
按 ctrl + I 显示506个操作/运算命令符?(display all 506 possibilities)
按 ctrl + J 等于按回车键;
按 ctrl + R 可以通过输入字符/字串匹配查找键入过的命令中出现过的输入字符/字串的命令;
按 ctrl + S 与上一个类似;
按 ctrl + P 可以向前查找键入过的命令;
按 ctrl + D 删除当前光标位置上的字符,如果没有字符且使用该命令前键入的是其他不显示命令(比如退格键、其他ctrl命令),则退出GHCI;
按 ctrl + A 将光标移动到字符串的第一个字符上;
按 ctrl + E 将光标移动到最后一个字符后面;
按 ctrl + F 是将光标往后移动一个字符;
按 ctrl + K 是删除当前光标位置上及之后的所有字符
按 ctrl + W 删除当前光标位置以前的字符直到有一个空格停止;
按 ctrl + T 可交换当前光标位置上的字符与光标位置前一个字符的位置,交换后光标位置不变,如果光标在字符串后,则交换光标前两个字符之间的位置;
按 ctrl + C 可退出GHCI,也可换行。 键入 ‘:quit’ 退出GHCI。 键入命令 ‘:?’ ro ‘:help’ 可以查看一些命令。
最后,给一个示例:

捣鼓Haskell的更多相关文章
- 好久没发贴了,最近捣鼓了个基于node的图片压缩小网站解析。
看了下,距离上次发帖都是去年10月份的事,忙于工作的我很少跑博客园里面来玩了. 做这个小网站的初衷是 https://tinypng.com/ 这个网站有时候访问很慢,然后自己去研究了下图片压缩. 网 ...
- 捣鼓TinyMCE粘贴图片并上传+Flask后台
好久没有编程了,最近需要完成一个小功能,为了方便,需要粘贴图片后上传到后台.前台编辑器用tinymce(N年前用过,我也就知道这个编辑器而已.这次使用下来感觉文档更丰富了),后台我用的Flask.昨天 ...
- WSL捣鼓记——图形化(以emacs为例)
前言 这学期开始学习linux,但笔记本装了双系统之后指纹识别会失效,开虚拟机又十分占据内存,于是乎基本需要使用linux的时候就用wsl,可奈何只有命令行界面,在需要使用图形软件(如emacs)的时 ...
- 捣鼓FileZilla
今天突然对ftp服务器感兴趣,于是随意打了一个ftp词条,发现了FZ官网,好奇点进去下载了之后,捣鼓了一会.于是,也写一个小教程记录一下吧,害怕自己以后忘记怎么弄的了. 首先需要用到两个,一个是FZ ...
- mysql存储过程出参入参,sqlserver很熟悉的一件事到mysql,捣鼓了大半天。记录一下提醒自己。勿看
create PROCEDURE myTestProcname(in score int ,out result varchar(100))BEGINIF score>60 THENset re ...
- 捣鼓一个Ajax请求管理器
随着前端技术的不断发展,现在做的项目里很多页面里都会有大量的ajax请求,随之而来就有了一些问题: 1.没必要的ajax请求怎么处理? 2.ajax链式调用怎么维护? ajax链式调用最原始的写法: ...
- 瞎捣鼓的code highlight
int a ; int b; public int a ;int b char c; h2 { text-align: left;}.postTitle{ background-color:#F ...
- mysql 乱码问题的捣鼓
mysql在ubuntu的终端下出现中文乱码的问题: 先学着在不改数据库的情况下对my.cnf配置文件进行修改, 主要的是设置 default-character-set=utf8 但是设置完后数据库 ...
- 捣鼓TinyMCE 粘贴图片并上传+Django后台
前面一篇写了上传到Flask后台,但是我不熟悉Flask,原先想学习一下,据说是轻量级. 但是我发现,学习会浪费我大量的时间,因为我并不是以这个为生的,我的目标只是要完成功能,让我自己能尽早使用起来, ...
随机推荐
- iOS 音视频播放
播放控制切换为: ijkplayer wiki: https://github.com/changsanjiang/SJVideoPlayer/wiki/Use-ijkplayer 播放控制切换为: ...
- CI 框架批量添加数据(如果数据库有就更新数据)
model: public function insert_select($values) { $sql = 'INSERT INTO ' . $this->_table_name . '(ar ...
- CentOS安装MySQL的步骤
1.下载 Mysql yum包 http://dev.mysql.com/doc/mysql-yum-repo-quick-guide/en/ 下载到本地再上传到服务器,或者使用wget 直接下载 w ...
- Python学习笔记(01)
参考书:<Python编程:从入门到实践> 还有其他 Chapter01 print print(a,b,sep="|") sep规定输出间的间隔 print(“Pyt ...
- 怎么拆分一个Excel工作簿中的多个工作表?
打开需要编辑的Excel文档.如图所示,工作簿下方有很多工作表.现在需要将这些工作表单独拆分开成一个个工作簿. 右键任意一个工作表标签,在弹出的下拉列表中选择查看代码.即弹出代码窗口.如下图所示. ...
- EF中 GroupJoin 与 Join
数据: GroupJoin: 返回左表所有数据 using (tempdbEntities context = new tempdbEntities()) { var query = context. ...
- C++实现对MySQL数据库的连接,以及增删改查
安装好MySQL,建好数据表的前提下. 如果只是想简单实现添加数据或者其他一个操作数据,可以参考另一篇博客. https://www.cnblogs.com/ming-4/p/11544514.htm ...
- C++文件写入,读出函数ofstream,ifstream的使用方法
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间. 1.插入器(<<) 向流输出数据.比如说系统有一个默认的标准输出流(cout),一般情况下 ...
- Top 9 colleges in the world from 2010 to 2020, AI and interdisciplinary areas.
http://csrankings.org/
- 从 0 到 1:Apache APISIX 的 Apache 之路
2019 年 12 月 14 日,又拍云联合 Apache APISIX 社区举办 API 网关与高性能服务最佳实践丨Open Talk 广州站活动,本次活动,邀请了来自Apache APISIX.又 ...