1
我使用NEWTYPE作爲記錄的字段,和模式匹配的「父」類型來提取嵌套值是麻煩:如何整潔地解構嵌入到記錄中的newtypes?
newtype CityName = CityName String
newtype City = City {
name :: CityName
}
instance showCity :: Show City where
show (City { name }) = case name of (CityName cn) -> "City(" <> cn <> ")"
我可以解構「父」的類型,但然後我使用另一個模式匹配來提取包裝的字符串 - 即使新類型只有一個數據構造函數。只用一種模式解構整個類型會更方便。
這可能嗎?如果是這樣,我不能得到正確的語法。我嘗試了類似show (City { name :: (CityName cn) }) = cn
的東西,但它給了我語法錯誤。 PureScript by Example也沒有幫助我,但也許有更好的方法來做我想要的?
謝謝,很好的解釋。這個語法是否記錄在某處,或者它與Haskell中的相同?我不知道是否還有更多我不知道的解構「詭計」。 – stholzm
這裏有關於Github Wiki的語言指南:https://github.com/purescript/purescript/wiki/Language-Guide#record-patterns。它也可能在PureScript書中有所涉及,但這不是真正的參考,所以也許不是尋找這種事情的最簡單的地方! –