相关疑难解决方法(0)

有什么区别.(点)和$(美元符号)?

(.)和美元符号有($)什么区别?据我了解,它们都是不需要使用括号的语法糖.

syntax haskell function-composition

682
推荐指数
10
解决办法
15万
查看次数

haskell魔法代码,这里发生了什么

我正在查看Cloud Haskell软件包的Encoding.hs,并遇到了一些奇怪的代码,我希望有人可以帮助我更好地理解.包括必要的代码:

class (Binary a,Typeable a) => Serializable a
instance (Binary a,Typeable a) => Serializable a

data Payload = Payload
    { 
        payloadType :: !ByteString,
        payloadContent :: !ByteString
    } deriving (Typeable)

serialDecodePure :: (Serializable a) => Payload -> Maybe a
serialDecodePure a = (\id -> 
    let pc = payloadContent a
    in pc `seq`
        if (decode $! payloadType a) == show (typeOf $ id undefined)
        then Just (id $! decode pc)
        else Nothing ) id
Run Code Online (Sandbox Code Playgroud)

我只是好奇什么是$!(我猜测只是严格评估),还有为什么我们需要id技巧(懒惰评估的东西?).另外我特意遇到这条线的问题:

if (decode $! payloadType …
Run Code Online (Sandbox Code Playgroud)

syntax binary haskell

10
推荐指数
1
解决办法
548
查看次数

什么是$!哈斯克尔的意思/做什么?

语境:

do state1 <- act state
   dispatch $! state1
Run Code Online (Sandbox Code Playgroud)

是什么$!呢?

例如,为什么它不只是dispatch state1在这里?

syntax haskell

2
推荐指数
1
解决办法
1285
查看次数

1
推荐指数
2
解决办法
797
查看次数

标签 统计

haskell ×4

syntax ×4

binary ×1

function-composition ×1