<div dir="ltr">You might not encounter it, as ImplicitParams isn't common, but it has a nice answer. Note that `HasCallStack` is implemented as an implicit parameter: (?callstack :: CallStack).<div><br><div><br></div><div><div><font face="monospace, monospace">{-# LANGUAGE TypeOperators, LambdaCase, RankNTypes #-}</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">import GHC.Stack</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">type a ?-> b = HasCallStack => a -> b</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">foo :: a ?-> a</font></div><div><font face="monospace, monospace">foo x = x</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">map' :: (a ?-> b) -> [a] ?-> [b]</font></div><div><font face="monospace, monospace">map' f = \case</font></div><div><font face="monospace, monospace">  [] -> []</font></div><div><font face="monospace, monospace">  (x:xs) -> f x : map f xs</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">ohno :: Int ?-> String</font></div><div><font face="monospace, monospace">ohno 5 = error "Five is my least favorite number."</font></div><div><font face="monospace, monospace">ohno x = show x</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">main = print $ map' ohno [1..10]</font></div></div><div><br></div></div><div>This has the result:</div><div><br></div><div><div><font face="monospace, monospace">*Main> main</font></div><div><font face="monospace, monospace">["1","2","3","4","*** Exception: Five is my least favorite number.</font></div><div><font face="monospace, monospace">CallStack (from HasCallStack):</font></div><div><font face="monospace, monospace">  error, called at /home/matt/impl.hs:16:10 in main:Main</font></div><div><font face="monospace, monospace">  ohno, called at /home/matt/impl.hs:19:21 in main:Main</font></div><div><font face="monospace, monospace">  f, called at /home/matt/impl.hs:13:23 in main:Main</font></div><div><font face="monospace, monospace">  map', called at /home/matt/impl.hs:19:16 in main:Main</font></div></div><div><br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>Matt Parsons</div></div></div></div>
<br><div class="gmail_quote">On Sun, Mar 18, 2018 at 5:05 PM, Thomas Jakway <span dir="ltr"><<a href="mailto:tjakway@nyu.edu" target="_blank">tjakway@nyu.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  

    
  
  <div text="#000000" bgcolor="#FFFFFF">
    <br>
    Posting this here since some of you are Scala programmers:<a href="https://stackoverflow.com/questions/49353695/type-synonyms-for-implicits" target="_blank">
https://stackoverflow.com/<wbr>questions/49353695/type-<wbr>synonyms-for-implicits</a><br>
    <br>
    A type-level question you won't encounter in Haskell.<br>
  </div>

<br>______________________________<wbr>_________________<br>
Haskell-Cafe mailing list<br>
To (un)subscribe, modify options or view archives go to:<br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-<wbr>bin/mailman/listinfo/haskell-<wbr>cafe</a><br>
Only members subscribed via the mailman list are allowed to post.<br></blockquote></div><br></div>