Ocaml'deki haskell-like do notasyonu için camlp4 uzantısında çalışıyorum ve GHC'nin yinelemeli do-bindings'i (-XDoRec ile etkinleştirilmiş) nasıl derlediğini anlamaya çalışıyorum.
Monadic fixpoint birleştiricisinin sıkı bir dilde (Ocaml/F #/SML/... gibi) bulunması mümkün mü acaba?
Evet ise nasıl görünebilir? Çok faydalı olur muydu? hesaplama oluşturucu diğer monadik (veya MonadPlus) işlemleri ek olarak Delay
çalışmasını desteklemeye çünküSıkı bir dilde MonadFix
let rec ones = seq {
yield 1
yield! ones }
Bu desteklenir:
Yani, hayır - tamamen katı bir şekilde mümkün değildir. Tüm işlevsel dillerin bazı tembellik kavramları olduğu için (çoğunlukla fonksiyonlar, kapanışlar ve değişkenler) - tembel yapılar aracılığıyla "katı diller" de mümkündür. –
Çoğunlukla tembellik zaten orada ama eğer monadınız soyut bir tipin arkasındaysa, OCaml bunu istismar etmenize izin vermeyecektir - 'Bu tür bir ifadenin 'izin ver' seçeneğinin sağ tarafı olarak kullanılmasına izin verilmez. Bu gibi durumlarda sahte "birim" argümanlarına gitmelisiniz (ya da belki de "tembelliğe ihtiyacınız var"). – lukstafi