[Haskell-cafe] netwire example error message

briand at aracnet.com briand at aracnet.com
Sun Mar 22 04:57:17 UTC 2015

The error message:

    No instance for (Show e0) arising from a use of ‘testWire’
    The type variable ‘e0’ is ambiguous
    Note: there are several potential instances:
      instance Show Double -- Defined in ‘GHC.Float’
      instance Show Float -- Defined in ‘GHC.Float’
      instance (Integral a, Show a) => Show (GHC.Real.Ratio a)
        -- Defined in ‘GHC.Real’
      ...plus 45 others
    In the expression: testWire clockSession_ pos
    In an equation for ‘main’: main = testWire clockSession_ pos
Failed, modules loaded: none.

So here's my type debugging.  (netwire sure is convoluted)

pos => Wire s e m a Float

integral => a -> Wire s e m a a

clockSession_ => Session m (Timed NominalDiffTime ()) 

looks to me like the problem is probably rooted in the interaction of pos with (Timed NominalDiffTime) as it does not seem to have a float instance, but that doesn't seem like it should result in an error about ambiguity.

Any help appreciated.



import Prelude hiding ((.)) -- To use (.) in the scope of Categories instead
import Control.Wire
import FRP.Netwire

speed :: Float
speed = 0.5

pos :: (HasTime t s, Monad m) => Wire s e m a Float
pos = integral 0 . pure speed

-- The main function
main :: IO ()
main = testWire clockSession_ pos

More information about the Haskell-Cafe mailing list