2016-09-01 124 views
2

例如:方括號在類型聲明中的含義是什麼?

r <- query_ conn "SELECT * from test" :: IO [TestField] 

是什麼[TestField]代表什麼?

+3

TestField'的'名單。 – Alec

+0

啊,這是有道理的。我沒有意識到你可以在'IO'之後有'額外'類型! –

+2

這不是真的另外; ''''''就像'IO'一樣,''''''''''''是類型構造器。只是你可以寫''t''而不是'[] t'。 – chepner

回答

3

簡而言之,IO [TestField]是在IO monad中的TestField s的列表。

但是,更正確的描述是,它是IO操作,其結果的類型爲[TestField](因爲結果值僅在執行IO後獲得)。

您可以瞭解到更多關於在以下來源:

Haskell Hierarchical Libraries - The IO Monad

LYAH - An intro to lists

+3

沒錯,儘管我會避免說'IO X'是'IO' monad中的'X'。它實際上是_an'IO'動作,其結果的類型爲'X'_。所以,如果你執行那個動作,你會得到'X'值,但這並不意味着動作開始時包含一個'X'。因此,對於給定的示例:'IO [TestField]'是一個'IO'動作,其結果是'TestField'列表。 – leftaroundabout

+0

你說得對,我將這些信息添加到答案中。 – ljedrz

相關問題