Skip to content

BlockArguments does not apply to arguments to arrow control operators

I think this program should be accepted, but it is rejected with a parse error:

{-# LANGUAGE Arrows, BlockArguments #-}
module BlockArrows where

import Control.Arrow

blah :: Kleisli Maybe () ()
blah = proc () -> (| (<+>) (returnA -< ()) do
  returnA -< () |)
BlockArrows.hs:8:44: error: parse error on input ‘do’
  |
8 | blah = proc () -> (| (<+>) (returnA -< ()) do
  |                                            ^^

This seems like probably just an oversight to me; there’s no reason this shouldn’t work as far as I can tell.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information