Instance Show for function

前端 未结 3 1428
小蘑菇
小蘑菇 2020-12-06 03:21

I\'m currently trying to write a little Show instance for primitive arithmetic functions.

Goal ist to make a list of functions showable.

The very simple fun

相关标签:
3条回答
  • 2020-12-06 03:59

    Don't use WinHugs. Use GHC.

    In fact, in recent Haskell Platform versions there is already an instance of functions for Show.

    Prelude Text.Show.Functions> show (+1)
    "<function>"
    Prelude Text.Show.Functions> show (\x -> x ++ "foo")
    "<function>"
    

    Now, in your case, however, you need -XFlexibleInstances on, since your instance isn't of the form (Constructor a1 .. an) where a1 .. an are distinct type variables.

    Turn it on with {-# LANGUAGE FlexibleInstances #-}

    0 讨论(0)
  • 2020-12-06 04:01

    You can also use Hugs.

    Start Hugs with hugs -98 +o or runhugs -X-98 +o and use {-# LANGUAGE FlexibleInstances #-} in your source file.

    0 讨论(0)
  • 2020-12-06 04:06

    (This isn't an answer (Don's covers it), but it is far too long for a comment)

    The code has a lot of repeated logic (specifically op 3 3 == occurs a lot), but there is away to make this cleaner: case expressions. This allows us to compute op 3 3 once, and then handle the various cases (exactly the same as pattern matching in function definitions).

    showOp op = case op 3 3 of
                  6 -> "plus"
                  0 -> "minus"
                  9 -> "times"
                  1 -> "divide"
                  _ -> "undefined"
    
    0 讨论(0)
提交回复
热议问题