在多层monad中操纵值

时间:2019-05-08 21:19:15

标签: haskell

我的目标是从@Scheduled(cron = "0 0 1 1/1 * ? *") 中抽出numVal4,但要从Employment值的水平开始。

MyEmployment

编辑:

我应该让蜜蜂更具体些。我需要从DMap中访问值。实际的代码看起来更像这样:

data Employment = Employment
   { textVal1 :: Text
   , textVal2 :: Text
   , textVal3 :: Text
   , numVal4 :: Money }

data MyEmployment = MyEmployment Person Employment

MyEmployment (Person "Me") (Employment "This" "is a" "test" 55)

fmap . fmap (fromInteger (Employment _ _ _ x)) MyEmployment

我需要从thing = dmap ! (Some_Function . Some_OtherFunction $ MyEmployment) 内部获取数值,并使用某种包装程序:

Employment

1 个答案:

答案 0 :(得分:4)

除了所有语法问题外,我认为您要尝试的是以下操作。

这是您声明数据类型的方式:

data Employment = Employment
    { textVal1 :: Text
    , textVal2 :: Text
    , textVal3 :: Text
    , numVal4  :: Money }

注意不是::的{​​{1}},并注意缩进。

=似乎是一种数据类型,MyEmployment我认为您实际上是在意

MyEmployment :: Person Employment

然后在此设置中,如果要采用类型data MyEmployment = MyEmployment Person Employment 的值,并将函数应用于MyEmployment字段的numVal4字段,则记录语法允许您编写:

Employment