[Book Note] PFDS: Lists

原创 2016年05月31日 15:25:24
signature STACK
sig
  type a Stack

  val empty   : a Stack
  val isEmpty : a Stack -> bool

  val cons    : a * a Stack -> a Stack
  val head    : a Stack -> a
  val tail    : a Stack -> a Stack
end
structure List : STACK =
struct
  type a Stack = a list

  val empty = []
  fun isEmpty s = null s

  fun cons (x, s) = x :: s
  fun head s = hd s
  fun tail s = tl s
end
structure CustomStack : STACK = 
struct
  datatype a Stack = NIL
                   | CONS of a * a Stack

  val empty = NIL
  fun isEmpty NIL = true
    | isEmpty _ = false

  fun cons (x, s) = CONS (x, s)
  fun head NIL = raise EMPTY
    | head (CONS (x, s)) = x
  fun tail NIL = raise EMPTY
    | tail (CONS (x, s)) = s
end
fun [] ++ ys = ys
  | (x :: xs) ++ ys = x :: (xs ++ ys)

fun update ([], i, y) = raise SUBSCRIPT
  | update (x :: xs, 0, y) = y :: xs
  | update (x :: xs, i, y) = x :: update(xs, i - 1, y)
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

k_eckel's book lists 个人认为是目前最完善的C++及相关领域的书架

(转自)http://www.cnblogs.com/k-eckel/archive/2005/07/08/188270.html       最近一年,多读技术书籍。每有经典著作,买之、藏之、...

Gof design pattern book and note

  • 2009年07月20日 11:05
  • 8KB
  • 下载

什么是读书笔记(Book Mark , Book Note)?

读书笔记,是指人们在阅读书籍或文章时,遇到值得记 录的东西和自己的心得、体会,随时随地把它写下来的一种文体。古人有条著名的读书治学经验,叫做读书要做到:眼到、口到、心到、手到。这“手到”就是读书笔记。...

Lists例子

  • 2007年12月29日 23:57
  • 34KB
  • 下载

DirectX 9.0c游戏开发手记之RPG编程自学日志之4: Preparing for the Book (准备工作)(下)

本文由哈利_蜘蛛侠原创,转载请注明出处!有问题请联系2024958085@qq.com           上一期我们讲了第一章的第4-6节。内容挺多。这次的内容也不少。         为了方便,我...

链表代码lists

  • 2015年05月28日 22:20
  • 42KB
  • 下载

The lists of TASK_RUNNING processes new

  • 2011年09月08日 22:56
  • 14KB
  • 下载

标签(转自:http://221.199.150.103/jsj/html/page/book/xhtml/m_doctype.htm)

  标签功能: 标签用于声明文档的语言和DTD类型。 标签实际上不是HTML标签,它位于文档的最前面,用于说明文档的类型和使用的规范,当进行文档验证时,系统按照指明的规范进行验证。注:标签没有结束标签...
  • lslxdx
  • lslxdx
  • 2011年03月26日 23:05
  • 1093

Mastering.Python.Lists.1519586078

  • 2016年03月07日 09:48
  • 659KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[Book Note] PFDS: Lists
举报原因:
原因补充:

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