初识Haskell
在COMP30026 Models of Computation中接触了新的编程语言Haskell,一个之前听都没有听过的语言,在此记录关于Haskell的一些最基本概念。
1.Haskell是一个函数式编程语言(functional programming language),函数式编程语言最基本的操作是function application。
2.GHC(the Glasgow Haskell Compiler)是Haskell的编译器,GHCi是Haskell的互动编程环境。
3.官网www.haskell.org,相关下载、文档、教程都在其中。
4.Haskell语言的特点(摘自官网):
(1) 静态类型statically typed
在Haskell中所有的表达式(expression)的类型(type)在编译时确定,在function application中的类型必须匹配,不匹配会被编译器拒绝。类型在Haskell中不仅是一种保证形式,也是Haskell对程序构建的表示。
(2) 纯函数purely functional
在Haskell中的每一个函数(function)都是数学意义上的函数,即使是副作用(side-effect)的IO操作也只是对纯代码产生的操作的描述。没有语句和指令,只有不能改变(局部或全局)变量和访问如时间和随机数状态的表达式,也就是无状态。
(3) 类型推断type inference
不必在Haskell中明确写出每个类型。类型将通过双向统一每一个类型来推断出。但如果选择写出类型或是要求编译器写出。
(4) 并发concurrent
Haskell对效果的明确处理,非常适合并发编程。它的编译器GHC带有高性能并行垃圾收集器和轻量级并发库,其中包含许多有用的并发原语和抽象。
(5) 惰性lazy
函数不检测其参数,这意味程序可以很好地通过普通函数和控制结构(如if/else)来组合在一起。Haskell代码的纯粹使得功能链更容易融合在一起,从而取得性能优势。
(6) 包packages
Haskell的开源贡献非常活跃,公共包服务器上提供了范围非常广的包。
初识Haskell的更多相关文章
- 初识Haskell 五:自定义数据类型和类型类
对Discrete Mathematics Using a Computer的第一章Introduction to Haskell进行总结.环境Windows 自定义数据类型 data type de ...
- 初识Haskell 四:函数function之二 常见函数
对Discrete Mathematics Using a Computer的第一章Introduction to Haskell进行总结.环境Windows,关于函数的部分太长了,分开写. 常用的对 ...
- 初识Haskell 三:函数function
对Discrete Mathematics Using a Computer的第一章Introduction to Haskell进行总结.环境Windows 函数毫无疑问是函数式语言的核心. 在Ha ...
- 初识Haskell 二:基本操作符、类型Type、数据结构
对Discrete Mathematics Using a Computer的第一章Introduction to Haskell进行总结.环境Windows 1. 在安装了ghci后,便可以进行Ha ...
- Redis初识、设计思想与一些学习资源推荐
一.Redis简介 1.什么是Redis Redis 是一个开源的使用ANSI C 语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value 数据库,并提供多种语言的API.从2010 年 ...
- TensorFlow学习(1)-初识
初识TensorFlow 一.术语潜知 深度学习:深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法. 深度学 ...
- Android动画效果之初识Property Animation(属性动画)
前言: 前面两篇介绍了Android的Tween Animation(补间动画) Android动画效果之Tween Animation(补间动画).Frame Animation(逐帧动画)Andr ...
- 初识Hadoop
第一部分: 初识Hadoop 一. 谁说大象不能跳舞 业务数据越来越多,用关系型数据库来存储和处理数据越来越感觉吃力,一个查询或者一个导出,要执行很长 ...
- python学习笔记(基础四:模块初识、pyc和PyCodeObject是什么)
一.模块初识(一) 模块,也叫库.库有标准库第三方库. 注意事项:文件名不能和导入的模块名相同 1. sys模块 import sys print(sys.path) #打印环境变量 print(sy ...
随机推荐
- pycharm安装svn插件
弄了svn的服务端和客户端,为了方便我pycharm的使用,我又在pycharm里进行了配置,要用到subversion 下载 https://sourceforge.net/projects/win ...
- springboot~thymeleaf页面布局的步骤
参考:https://ultraq.github.io/thymeleaf-layout-dialect/Installation.html 依赖包 注意里面的thymeleaf-layout-dia ...
- Java进阶篇设计模式之一 ----- 单例模式
前言 在刚学编程没多久就听说过设计模式的大名,不过由于当时还是个彻彻底底的菜鸟,并没有去触碰.直到在开始工作中对简单的业务代码较为熟悉之后,才正式的接触设计模式.当时最早接触的设计模式是工厂模式,不过 ...
- Asp.Net Core 轻松学-HttpClient的演进和避坑
前言 在 Asp.Net Core 1.0 时代,由于设计上的问题, HttpClient 给开发者带来了无尽的困扰,用 Asp.Net Core 开发团队的话来说就是:我们注意到,HttpC ...
- 2.3Options建立配置和实体的映射「深入浅出ASP.NET Core系列」
希望给你3-5分钟的碎片化学习,可能是坐地铁.等公交,积少成多,水滴石穿,谢谢关注. Startup.cs中创建MVC中间件 关键代码:services.AddMvc();app.UseMvcWith ...
- Sql学习笔记(二)—— 条件查询
上篇简单介绍了一下sql的一些基础增删改查语句,而针对多种多样的查询语句则未详细说明,这一篇继续记录一下关于各种条件查询的知识. 1.按列名进行查询 语句: select stuName , stuA ...
- asp.net 仿微信端菜单设置
第一步:添加引用文件 <link rel="stylesheet" href="~/assets/css/bootstrap.min.css"> & ...
- 69道Spring面试题和答案,简单明了无套路
目录 Spring 概述 依赖注入 Spring beans Spring注解 Spring数据访问 Spring面向切面编程(AOP) Spring MVC Spring 概述 1. 什么是spri ...
- 第三章:shiro授权认证
授权:也叫访问控制,即在应用中控制谁能访问哪些资源(如访问页面/编辑数据/页面操作等). 主体:即访问应用的用户,在Shiro中使用Subject代表该用户.用户只有授权后才允许访问相应的资源. 资源 ...
- 海康&大华&DSS视频拉流-RTSP转RTMP多媒体播放技术
海康&大华&DSS获取RTSP 实时流 海康:rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/ ...