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 ()

questionAnswers(1)

yourAnswerToTheQuestion