2010-01-24 24 views

Trả lời

12

Bạn có thể thử thực hiện bằng cách đặt điểm ngắt trên đó, vì vậy hàm nằm trong phạm vi từ trình gỡ lỗi.

Ngoài ra tôi nghĩ rằng EclipseFP có thể cho bạn biết các loại điều khi bạn di chuột qua chúng, ít nhất một số thời gian.

+3

Whoa, chỉ nhận ra rằng điểm ngắt nơi một tùy chọn, sau khi đăng một giải pháp nửa nướng phức tạp ... Sau đó nhận thấy câu trả lời này. GHCi in ra các loại biểu thức trong phạm vi hiện tại khi nó dừng lại ở điểm ngắt mà không có bất kỳ prodding đặc biệt nào, do đó, nó chỉ là vấn đề vị trí. +1! –

+3

Mẹo hay nhưng không hoạt động nếu mã không biên dịch. Câu trả lời của Tom có ​​thể có ích. –

21

Đây là một hack nhanh chóng và xấu xí, nhưng những gì tôi thường làm là chỉ cần sử dụng các chức năng trong một cách sai lầm và đọc các thông báo lỗi:

inc x = x + 1 
    where 
    f (y, z) = y + z 
    g = f :: Char 

GHCi đầu ra:

Couldn't match expected type `Char' 
     against inferred type `(t, t) -> t' 
In the expression: f :: Char 

Mặc dù điều này rời khỏi bối cảnh Num t =>, điều này thường cung cấp cho tôi đủ thông tin để tiếp tục.

+1

+1 Tuyệt vời! Điều này thực sự giúp tôi hiểu một định nghĩa hàm lông! Lưu ý: điều này hoạt động trên *** bất kỳ biểu thức *** nào trong định nghĩa hàm. Ví dụ: nếu bạn muốn xem loại 'blah' trong' f x = foo + blah', hãy làm - 'f x = foo + (cho phép exp = blah trong exp :: Char)'. –

Các vấn đề liên quan