无废话学习Haskell -- 语言基础

原创 2007年09月26日 21:09:00
让我们从如下的代码开始介绍语言基础(相信和我一样,你看到Haskell的语法时候,肯定以为自己到了火星了)

List makeList()
{
    List current = new List();
    current.value = 1;
    current.next = makeList();
    return current;
}
如果在类似于C/C++语言的代码中,建立一个列表可能会有这样的函数。不过显然这样的函数在运行中会出现死循环——或者会生成一个无限长的列表。
然而,在Haskell中,可以这样来写代码:

makeList=1:makeList

“:”是haskell中的一个操作符,用来生成列表的。
那么如果你单独运行这段代码,同样的道理,会生成一个没有边界的数组(程序也因此不会停止了)。但是如果你只需要使用makeList中的有限长度的内容(比如长度为10),那么这段代码就可以很好的工作,因为基于“lazy”的原则,haskell只会执行10次。这就是懒加载
另外,haskell是大小写相关的。而且这里有一个关键点,对于值或者函数,标识符要以小写字母打头,对于类型,要以大写字母打头。

相关文章推荐

为什么我们要学习Haskell这样的编程语言

最近的几个月,我一直在学习一种叫Haskell的编程语言。由于里面有太多的从未遇到的编程概念,整个过程就像是完全重新学习如何编程。在i.TV网站上,我写了很多JavaScript(node.js和前端...
  • tywali
  • tywali
  • 2012年04月11日 12:47
  • 185

Haskell语言学习笔记(10)Writer Monad

Writer Monad
  • zwvista
  • zwvista
  • 2017年02月11日 16:09
  • 429

Haskell基础学习

  • 2014年10月24日 10:19
  • 30KB
  • 下载

为什么要学习Haskell语言

你会发现 Haskell 库里有能够处理各种事情的各种各样的函数。起初我以为这些只是一种技术上的积累,但随后我认识到,这些函数相比起其它语言里的函数,它们能应用到形式更广泛的问题中。这使得它们更有价值...

七周七语言之Haskell代码学习

-- hello_world.hs module Main where -- 创建Main模块(它是顶级模块),模块用于将相关代码放到一个相同的作用域中 main = putStrLn "Hel...

Haskell语言学习笔记(1)

函数, 列表解析, (.), ($), data, type, newtype, 类型类(typeclass)
  • zwvista
  • zwvista
  • 2015年05月11日 11:47
  • 1014

Haskell是个神码语言

Haskell语言是一种函数式编程语言,而且是具有lazy evaluation(懒求值)特性的函数式编程语言。一开始看见函数式编程概念,感觉很高深,很computer science,很有计算机科学...

Frege-基于JVM的类Haskell纯函数式编程语言

Frege是一门受Haskell语言启发而设计的纯函数式编程语言。Frege程序会被编译为Java,并运行于JVM上。它与Haskell是如此的相似,以至于有人称它为JVM上的Haskell。取Fre...

2012 年 6 月开发语言排行榜 - Haskell 快速逼近 top20

就在上个月发布 TIOBE 排行榜时,我们自己问自己,谁会是下一个明星编程语言呢?我们提出了几个候选者,如 Scala,Erlang 和 Clojure。很明显,这些都是函数式编程领域的,新秀被认定是...
  • defonds
  • defonds
  • 2012年06月11日 16:52
  • 2244

Haskell函数式编程基础习题(4)

--Exercise 6.35 --Exercise 6.34 --Exercise 6.33 --Exercise 6.32 printImage :: Image -> IO() print...
  • daaoke
  • daaoke
  • 2014年12月30日 21:31
  • 729
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:无废话学习Haskell -- 语言基础
举报原因:
原因补充:

(最多只允许输入30个字)