Biraz Haskell derleyicisi yazıyorum ve mümkün olduğu kadar Haskell 2010'u uygulamak istiyorum. Derleyicim bir modülü ayrıştırabilir, ancak bir programa modülleri tamamlamak önemsiz bir görev gibi görünüyor. Ben zor, ama belki geçerli, Haskell modülleri bazı örnekler oluşur: BuradaUçları çözme Haskell modülü ithalatı ve ihracatı
module F(G.x) where
import F as G
x = 2
modül F
ihracat G.x
ancak G.x
F.x
aynıdır, bu nedenle modül F
ihracat x
eğer ve ancak, eğer ihraç x
. Bu örnekte
module A(a) where
import B(a)
a = 2
module B(a) where
import A(a)
, derleyici
B
ithal
a
ilan
a = 2
aynı olup olmadığını kontrol etmek zorundadır modülün
A
ihracatını ancak
B
ihracatını
a
eğer ve ancak,
A
ihracat
a
çözmek için. modülünü
A
çözme sırasında
module A(f) where
import B(f)
module B(f) where
import A(f)
, derleyici may've A
ihracat f
, böylece B
A(f)
içe ve dışa f
ima, B
ithal f
var olduğunu varsaydık. Tek sorun, herhangi bir yerde tanımlanmış olan f
olmamasıdır :). İşte
module A(module X) where
import A as X
import B as X
import C as X
a = 2
module B(module C, C.b) where
import C
b = 3
module C(module C)
import B as C
c = 4
, module
ihracat ihracat listeleri birbirlerine ve kendilerine bağımlı olduklarını neden olmaktadır.
Tüm bu örnekler, Haskell 2010 tarafından tanımlanan şekilde Haskell olarak geçerli olmalıdır.
Haskell modüllerinin doğru ve tamamen nasıl uygulanacağı konusunda bir fikrin olup olmadığını öğrenmek istiyorum.
bir modül sadece (basit) değişken bağlamaları,import
s (muhtemelen
as
veya
qualified
ile), ve muhtemelen kalifiye değişkenlerin ihracat listesi ve
module ...
kısaltmalar içerdiğini varsayalım. Her modül
- işlem sonlu listesi: algoritma edebilmek zorundadır
Vay, teşekkür ederim, aslında bu sorunu hedefleyen belgeler ve kütüphaneler olduğunu ummamıştım :) –