在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相关的语言),但这是值得的