için, örneğinMonadFix örneği []
instance MonadFix [] where
mfix f = case fix (f . head) of
[] -> []
(x:_) -> x : mfix (tail . f)
olarak tanımlanır Ama deterministik olmayan hesaplamalar olarak görülen []
monadın göre arkasında sezgisel anlamını kavramak için başarısız ediyorum. işlevinde, f
işlevinde argümanında katı olmamalıdır, bu nedenle bağımsız değişken incelenemez. Ve tanıma göre, argümanı çıktılarının herhangi bir yerinde kullanamazsınız, aksi halde bir noktada fix (f . head)
'a çarpıp uzaklaşır. Yani mfix (const someList)
dışındaki listeler için mfix
için herhangi bir kullanım (veya iyi örnek) var mı? Aslında sıkı bir işlevi ile bunları kullanmak eğer
"*' f "kendi argümanında katı olmamalıdır *" argümanını tembel olarak inceleyemediği anlamına gelmez. – Bergi
@Bergi İyi nokta. Bir örnekle detaylandırır mısınız? –