哈斯克尔初学者,提前抱歉这个愚蠢的问题。我来自Python,只是想知道如何从Haskell数据类型中获取数据(即字符串)。
假设我有rdf4h
使用的RDF图,我可以从中获取Node
个对象。这就是我print
时的样子:
LNode (PlainL "Stories from the Italian Poets: with Lives of the Writers, Volume 1")
如何从中获取字符串值? (即,“来自...的故事”)我搜索了Hoogle :: Node -> Text
,但我似乎找不到任何东西。我似乎也无法在Data.RDF.Types或类似的任何地方找到合适的功能。我确信这里有一些非常明显的东西。
答案 0 :(得分:7)
获取数据类型字段的最常用方法是在构造函数上进行模式匹配。 LValue
类型有三个构造函数PlainL !Text
,PlainLL !Text !Text
和TypedL !Text !Text
。
handleLValue lvalue =
case lvalue of
PlainL a -> ... do something with the value a here
PlainLL a b -> ... do something with the values a and b here
TypedL a b -> ... ditto
答案 1 :(得分:2)
以下是Data.RDF.Types
的相关类型:
data Node = UNode !T.Text
| BNode !T.Text
| BNodeGen !Int
| LNode !LValue deriving (Generic,Show)
data LValue = PlainL !T.Text
| PlainLL !T.Text !T.Text
| TypedL !T.Text !T.Text deriving (Generic,Show)
所以,如果你有
x = LNode (PlainL "Stories from the Italian Poets: with Lives of the Writers, Volume 1")
你只是模式匹配:
let (LNode (PlainL t)) = x
in t