Why is there no Show instance for functions?

前端 未结 3 1048
情书的邮戳
情书的邮戳 2020-12-07 02:02

Just a quick conceptual question, I am currently trying to learn and understand Haskell better.

I know the Show function is used to convert values to strings, but wh

3条回答
  •  一向
    一向 (楼主)
    2020-12-07 02:31

    It's not that they can't, but that there's not usually a good reason to.

    But if you'd like, you definitely can:

    Prelude> :{
    Prelude| instance Show (a -> b) where
    Prelude|    show _ = "A function."
    Prelude| :}
    Prelude> print (\x -> x + 7)
    A function.
    Prelude> print (\a b c -> a + b + c)
    A function.
    

    If you'd like to show the textual representation of the function, well - you can't do that. Unlike metaprogramming languages like Ruby, JS, etc, Haskell code very little knowledge of its own internals.

提交回复
热议问题