我一直在尝试对cand数据进行迭代,以应用函数“ pt_string”。
Pt :: (Float, Float)
Person :: (Pt, Pt, [Pt], Float)
我的想法是为tupple的每个元素以不同的方式调用该函数“ pt_string”。
例如:
Point
(第一)[Point]
Point
(第二个)到目前为止,我得到了:
pt_string :: pt -> String
pt_string pt = "(" ++ show (fst pt) ++ "," ++ show (snd pt) ++ ")\n"
哪个工作正常。但是如何按上述顺序创建 cand_to_string :: cand->字符串?
谢谢!
答案 0 :(得分:1)
假设
type Candidate = (Point, Point, [Point], Float)
您可以使用
candidate_to_string :: Candidate -> String
candidate_to_string (p1, p2, ps, f) =
"(" ++
point_to_string p1 ++ ", " ++
point_to_string p2 ++ ", " ++
points_to_string ps ++ ", " ++
show f ++
")"
依赖
points_to_string :: [Point] -> String
points_to_string ps = "[" ++ intercalate ", " (map point_to_string ps) ++ "]"
利用Data.List.intercalate
在点之间添加逗号。
还请注意,如果仅需要标准列表/元组打印格式,则可以直接使用
candidate_to_string :: Candidate -> String
candidate_to_string = show