Objective c 目标C中的递归数据类型和类型

Objective c 目标C中的递归数据类型和类型,objective-c,sml,Objective C,Sml,相关: 从相关的问题中,我能够找出如何使用块对象来模拟挂起的计算,但我仍在努力掌握这个概念。对于horblecomputing来说,这是可行的,但是如何对无限流进行建模呢 通常在SML中是如何完成的 (* Have a datatype to wrap a computation *) datatype 'a susp = Susp of (unit -> 'a) (* Create a recursive datatype to handle an infinite stream

相关:

从相关的问题中,我能够找出如何使用块对象来模拟挂起的计算,但我仍在努力掌握这个概念。对于
horblecomputing
来说,这是可行的,但是如何对无限流进行建模呢

通常在SML中是如何完成的

(* Have a datatype to wrap a computation *)
datatype 'a susp = Susp of (unit -> 'a)

(* Create a recursive datatype to handle an infinite stream  *)
datatype 'a stream = Cons of 'a * ('a stream') susp
type 'a stream = ('a stream') susp
现在在Objective-C中有一个typedef,它接受预定义的值

enum suit {hearts, spades, diamonds, clubs};
我就是想不出如何得到部分的
Cons

现在,如果无限数据建模是不可能的,如何将一个模型,例如一手牌。同样在SML

datatype suit = Clubs | Spades | Hearts | Diamonds
datatype rank = Two | Four | Five (*... etc *)

(* Then a card *)
type card = rank*suit

(* And now we can have a Hand :) *)
datatype hand = Empty | Hand of card * hand;

很可能所有的东西都是不可转移的,但我只是好奇在惰性编程中如何使用Objective C。。。如按需处理所有自然数。我一直在寻找这个问题。

有两个独立的正交概念:递归数据类型和惰性计算。在C和类似C的语言中,可以使用
struct
对前者建模,该结构包含指向自身的指针,或指向直接或间接包含/指向该
struct
的其他数据类型的指针。使用块对象或任何东西暂停计算。将这两个概念结合在一起,得到一个
struct
,其中包含一个指向挂起计算的指针,该计算返回一个
struct
的指针