ipos de dados preguiçosos no Objetivo C
No SML, é possível o seguinte para modelar a programação lenta,
// Have a datatype to wrap a computation
datatype 'a susp = Susp of (unit -> 'a)
// A function to hold the computation
fun delay(f ) = Susp(f)
Sei que os fechamentos podem ser escritos usando Blocks,
int multiplier = 7;
int (^myBlock)(int) = ^(int num) {
return num * multiplier;
};
Então eu acho que posso usá-lo como argumento de função. O próximo passo seria como usar funções sem argumentos reais valor unitári por exemplo. em SMLfn () =>
) e criar tipos de dados preguiçosos como o descrito acim
Isso é possível ou devo seguir uma maneira diferente e mais óbvia?
O objetivo final seria emular o comportamento da computação suspensa do SML,
let val x = Susp(fn () => horribleComp(345))
in
force(x) + force(x)
end
onde a força (x) é
fun force (Susp(f)) = f ()