Haskell,Where 内的案例

标签 haskell functional-programming

我想知道是否有一个习惯用法来处理以下示例。它必须非常常见,而且我认为您不能使用 where 子句来处理它。除了写出两个单独的案例之外,我不知道该怎么做。

一般问题是我想根据 SelectionType 创建具有不同值的 map ,如下所示:

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"

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

最佳答案

只需将方程移到案例之外即可。

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

关于Haskell,Where 内的案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41689315/

相关文章:

list - 是否 `(' a' :_)` represent a tuple or a list?

Haskell初学者,尝试输出一个列表

javascript - JavaScript 的 FilterWithKeys?

javascript - 以函数式风格应用于字符串的函数序列

haskell - 编译器可以进行数学推导/证明吗?

haskell - 什么是预测性?

haskell - 使用 Control.Wire.Unsafe.Event 时我应该维护哪些不变量?

functional-programming - 顶级函数私下共享作用域

c 程序 递归函数 奇数

Haskell - 将列表转换为带有索引的对象列表