Nai*_*dra 1 monads haskell functional-programming record pointfree
给定函数类型定义:自定义数据类型在f :: MonadIO m -> a -> m B哪里,我如何访问成员,例如从返回的值访问成员?BB = B {x y z ...}xf
我正在尝试使用wave包来制作应用程序,但我有一个简单的问题:我希望访问waveFileFormat数据类型Wave
然而,简单地这样做waveFileFormat $ readWaveFile "file"是行不通的,因为readWaveFile "file"实际上是readWaveFileMonadIO m => m Wave返回的。
readWaveFile "file" >>= waveFileFormat
readWaveFile "file" >> waveFileFormat
do{wave<-readWaveFile "file"; return $ waveFileFormat wave}
您可以使用fmap(或其中缀运算符形式,(<$>)):
waveFileFormat <$> readWaveFile "file"
Run Code Online (Sandbox Code Playgroud)
这有类型MonadIO m => m WaveFormat。你永远无法逃脱单子,但你可以继续随心所欲地操纵它的价值。
| 归档时间: |
|
| 查看次数: |
223 次 |
| 最近记录: |