Haskell,Case里面的Where

时间:2017-01-17 04:54:47

标签: haskell functional-programming

我想知道是否有成语来处理以下示例。它必须非常普遍,我不认为你可以使用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"

处理上述情况的最佳方法是什么,因为上面没有编译。

1 个答案:

答案 0 :(得分:4)

只需将等式移到案例之外。

foo sel t = [ x t, y t, z t <> something ]
  where
    something = case sel of
      A -> "a selected"
      B -> "b selected"