[Haskell-cafe] Channel9 Interview: Software Composability and the Future of Languages

Bulat Ziganshin bulat.ziganshin at gmail.com
Thu Feb 1 05:33:56 EST 2007

Hello Tomasz,

Thursday, February 1, 2007, 1:15:39 PM, you wrote:

>> while (hGetBuf h buf bufsize == bufsize)
>>   crc := updateCrc crc buf bufsize
>>   break if crc==0
>>   print crc

>     inContT $ callCC $ \break -> do
>         flip execStateT 0 $ do
>             whileM (liftM (== bufsize) (hGetBuf h buf bufsize)) $ do
>                 modifyM (updateCrc buf bufsize)
>                 crc <- get
>                 when (crc == 0) (lift (break crc))
>                 print crc

>> how this can be expressed in Haskell, without losing clarity?
> I think it's quite clear what it does.

first. it's longer than original. what we can learn here is that
imperative languages have built-in "monadic" features support,
including automatic lifting and continuations. OTOH, of course, they
don't support type inference. so in one environment we need to
explicitly declare types while in other environment we need to
explicitly specify lifting operations

second. unfortunately, current Haskell libs defined in terms of IO
monad, not MonadIO. while this issue, i hope, will be addressed in
future, i write programs right now :)

Best regards,
 Bulat                            mailto:Bulat.Ziganshin at gmail.com

More information about the Haskell-Cafe mailing list