Hi,

Am Mittwoch, den 20.01.2016, 10:32 +0000 schrieb Simon Peyton Jones:
> >  foo x :: AppendsCallStack => a -> a
> 
> Remove the "x"!

heh. Silly me. So let’s try again:


With 7.10 it now works:

    ==> AppendCallStack.hs <==
    {-# LANGUAGE ConstraintKinds, ImplicitParams #-}
    module AppendCallStack (AppendsCallStack) where

    import GHC.Stack

    type AppendsCallStack = ?callStack::CallStack

    ==> Bar.hs <==
    {-# LANGUAGE FlexibleContexts #-}
    module Main where

    import AppendCallStack
    import MyError

    foo :: AppendsCallStack => a -> a
    foo x = myerror "Test"

    main = print (foo ())

    ==> MyError.hs <==
    {-# LANGUAGE ImplicitParams #-}
    module MyError where

    import GHC.Stack

    myerror :: (?callStack :: CallStack) => String -> a
    myerror msg = error (msg ++ ": " ++ showCallStack ?callStack)


Note that I need FlexibleContexts on the usage site to be able to use
this, otherwise I get

     Non type-variable argument
      in the constraint: ?callStack::GHC.Stack.CallStack

See it in action:

    $ ghc --make Bar && ./Bar
    Bar: Test: ?callStack, called at ./MyError.hs:7:51 in main:MyError
      myerror, called at Bar.hs:8:9 in main:Main
      foo, called at Bar.hs:10:15 in main:Main


With GHC-HEAD, it compiles no longer(!):

    [1 of 2] Compiling AppendCallStack  ( AppendCallStack.hs,
    AppendCallStack.o )

    AppendCallStack.hs:6:1: error:
        • Illegal implicit parameter ‘?callStack::CallStack’
        • In the type synonym declaration for ‘AppendsCallStack’


So Richard, does it do what you want with GHC-7.10? And given that GHC
HEAD rejects it, was 7.10 wrong or is there a bug in HEAD?

Greetings,
Joachim

-- 
Joachim “nomeata” Breitner
  [email protected]http://www.joachim-breitner.de/
  Jabber: [email protected]  • GPG-Key: 0xF0FBF51F
  Debian Developer: [email protected]

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
ghc-devs mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to