Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SML中取函数_Sml - Fatal编程技术网

在SML中取函数

在SML中取函数,sml,Sml,在函数中,取 fun TAKE (xs,0) = [] | TAKE (NIL, n) = raise Subscript | TAKE (CONS (x,xf),n) = x :: TAKE(xf(), n-1); 什么是xs,x,xf? 您还可以告诉我take函数是如何工作的吗。您的take函数似乎是在某种类型的数据结构上运行的,例如 datatype 'a stream = NIL | CONS of 'a * (unit -> 'a

函数中,取

fun TAKE (xs,0)          = []
  | TAKE (NIL, n)        = raise Subscript
  | TAKE (CONS (x,xf),n) = x :: TAKE(xf(), n-1);
什么是xs,x,xf?
您还可以告诉我take函数是如何工作的吗。

您的take函数似乎是在某种类型的数据结构上运行的,例如

datatype 'a stream =  NIL | CONS of 'a  *  (unit -> 'a stream)
take函数迭代流数据结构,从中提取
n
元素,并返回包含这些元素的列表

标识符
xs
是保存流数据结构的函数参数,标识符
n
是保存要检索(即获取)的元素数量的函数参数。标识符
x
xf
是模式,它们绑定到
CONS
单元格的值,因此
x
是头(即
'a
),而
xf
是尾(即
(单元->'a流)

我的印象是(基于您的问题),您需要对SML和函数式编程有更深入的了解,才能理解这个答案。但是,在这里提问很可能无法实现这一点。我建议您获得一本好的参考书,就像SO中此处建议的参考书一样


您可能还想阅读这本好书中的部分。书中的代码是Scheme格式的。如果您不熟悉任何与lisp相关的语言,可能需要一段时间才能全部获得,但这是值得的。

您的take函数似乎是在某种类型的数据结构上运行的,例如

datatype 'a stream =  NIL | CONS of 'a  *  (unit -> 'a stream)
take函数迭代流数据结构,从中提取
n
元素,并返回包含这些元素的列表

标识符
xs
是保存流数据结构的函数参数,标识符
n
是保存要检索的元素数量(即获取)的函数参数。标识符
x
xf
是模式,它们绑定到
CONS
单元格的值,因此
x
是头(即
'a
),而
xf
是尾(即
(单元->'a流)

我的印象是(基于您的问题),您需要对SML和函数式编程有更深入的了解,才能理解这个答案。但是,在这里提问很可能无法实现这一点。我建议您获得一本好的参考书,就像SO中此处建议的参考书一样

您可能还想阅读这本好书中的部分。书中的代码是Scheme。可能需要一段时间才能全部理解(如果您不熟悉任何与lisp相关的语言),但这是值得的