Ben Word32, String (curry'i yok say) ve IO Word32 çıktıları gibi birkaç parametre alan haskell'de bir işlev yazdım. Şimdi, bu işlevi işlevinin gerçek anlamda: aynı girişler için, çıktı her zaman aynı olacaktır. Yan etkisi yoktur. Word32 yerine IO Word32 işlevini döndürmesinin nedeni, son Word32 çıktısını hesaplamak için fonksiyonun birçok 32 bit Doğrusal Geri Besleme Kaydırma kaydının (lfsr) ve diğer yazmaçların bir döngüde birkaç kez güncelleştirmesidir.'State' (Evet) 'i gizlemeksizin bir haskell işlevi nasıl yazılır' state '(değişiklik) durumu değiştirir
Sorum şu: Bu işlev 'un etkin bir şekilde hiçbir yan etkisi olmadığı göz önüne alındığında, bu kayıt defteri güncellemelerini işlev uygulamasında gizlemek mümkün mü, bu işlev, Word32 ve IO Word32 döndürmüyor? Öyleyse nasıl?
FFI tarafından içe aktarılıyor mu? – fuz
Fonksiyonun gövdesinin zorunlu olarak kısmi olarak yazıldığını ve LSFR'leri tutmak için yerel olarak tanımlanmış IORef'i kullandığımı doğru mu anlıyoruz? Belki de yerine “STREF” kullanmayı düşünmeli ve hesaplamayı bir “ST” monad içinde çalıştırmalısınız. – rkhayrov
İşleviniz için kod yazabilir misiniz? Belki de ilk etapta IO olmalıdır. – augustss