show
là chức năng được xác định trên chức năng mà là thành viên của Show
typeclass (nếu bạn không biết những gì một typeclass là, nó kinda giống như một giao diện OOP).
Theo mặc định, các chức năng không phải là thành viên của typeclass, vì vậy chúng tôi không thể in chúng.
Chúng ta có thể làm cho nó một thành viên của typeclass với
instance Show (a -> b) where
show f = "Unicorns!!"
nhưng ở đây chúng tôi nhận ra lý do tại sao nó không được thực hiện theo mặc định. Không có một biểu diễn đơn giản, rõ ràng về các hàm và haskell không muốn đoán, và do đó không có cá thể nào.
Ví dụ "được phép" duy nhất là bản in thực sự chức năng, nhưng điều này sẽ yêu cầu thay đổi ngôn ngữ thực sự, nghĩa là nó sẽ được chuyển thành trình biên dịch, điều này không đáng giá đối với một vài trường hợp nó có thể hữu ích.
Hơn nữa đó là một sự thay đổi biên dịch không tầm thường, Haskell được biên dịch có nghĩa là sự khác nhau giữa một cái gì đó giống như f = g
và
f = g
đang hoàn toàn bị mất trên đó. Nhưng bạn chắc chắn muốn điều đó trong biểu diễn hàm của bạn. Bởi vì điều này, bạn sẽ phải lug quanh chuỗi này thông qua chương trình. Điều này chắc chắn không phải là những gì bạn muốn trong một nhị phân.
Nếu bạn thực sự muốn nó in kỳ lân !! mặc dù, cảm thấy tự do.
Bạn muốn tạo ra 'Chuỗi' nào cho hàm đó? –