Có thể viết một hàm isFunc :: a -> Bool
để xác định xem một giá trị tùy ý là một chức năng (dưới mọi hình thức) sao choXác định xem một giá trị là một chức năng trong Haskell
foo :: Int -> Int
bar :: Char -> Char -> Char
> isFunc foo
True
> isFunc bar
True
> isFunc 3
False
> isFunc 'a'
False
Tôi đang sử dụng Data.Dynamic vì vậy tôi không thể xác định loại trước.
'isFunc' không phải là một câu hỏi cũng như hình thành để hỏi trong sự hiện diện của đa hình. Tôi có một thứ kiểu 'a'; nó có phải là một chức năng hay không? Câu trả lời là không xác định cho đến khi tôi đã biến 'a' thành kiểu đơn hình, vì cho đến lúc đó tôi có thể chọn, ví dụ,' a ~ Int' hoặc 'a ~ Int -> Int'. Ví dụ 'isFunc 3' của bạn có chính xác vấn đề này, và thậm chí bạn có thể không nhận ra; làm thế nào để bạn biết '3' không phải là một chức năng? –