我想知道是否有成语来处理以下示例。它必须非常普遍,我不认为你可以使用where子句来处理它。除了写出两个单独的案例外,我不知道如何去做。
一般问题是我想创建一个具有不同值的地图,具体取决于SelectionType
,如下所示:
type OtherType = { x :: Int, y :: Int, z :: String } deriving (Show)
data SelectionType = A | B
myMapper = map foo someMyTypes
其中someMyTypes :: [MyType]
和foo
是
foo :: SelectionType -> MyType -> OtherType
foo sel t = [ x t, y t, z t <> something ]
where
case SelectionType of
A -> something = "a selected"
B -> something = "b selected"
处理上述情况的最佳方法是什么,因为上面没有编译。
答案 0 :(得分:4)
只需将等式移到案例之外。
foo sel t = [ x t, y t, z t <> something ]
where
something = case sel of
A -> "a selected"
B -> "b selected"