Tôi chỉ mới bắt đầu học lập trình chức năng, Lựa chọn của tôi là haskell. Đó là ok cho một vài ngày cho đến khi một cái gì đó bizzare xảy ra trong giao diện điều khiểnHaskell phun ra số sai một cách ngẫu nhiên
Lúc đầu, tôi nghĩ rằng các hướng dẫn (http://learnyouahaskell.com/starting-out) là sai
Prelude> [ (a,b,c) | c <- [1..10], b <- [1..c], a <- [1..b], a^2 + b^2 == c^2]
[(1,1,1)]
Nó phải là (3,4,5)
và (4,6,8)
. Tôi đã thử 3^2+5^2
, nó phun ra số lượng lớn các số này (giống như 60 hàng số, khoảng 3000 chữ số); 4^2+3^2
dường như sản xuất cùng một số.
Đang cố gắng để thêm bất kỳ số kết quả sẽ là 100
Prelude> 100 + 200
100
Prelude> 300 + 500
100
Tôi đóng cửa sổ và mở lại nó và vấn đề được giải quyết.
Tính toán sai lầm này thường xảy ra trong Haskell không? hoặc có lẽ phiên bản Haskell của tôi bị hỏng khi tải xuống? hoặc Bất kỳ cơ hội này là một lỗi hiếm?
Bạn có chắc bạn không làm điều gì đó như 'cho một + b = 100' trước khi chạy dòng đó? Tôi không thể nhân rộng kết quả của bạn, và 'cho' định nghĩa trong ghci là kinda stateful. – BluePeppers
Ngoài ra, đầu ra chính xác có thể là '[(3,4,5), (6,8,10)]', đó là những gì tôi nhận được (và phù hợp với cả trang Wikipedia và toán học của tôi như là 2 đầu tiên Pythagorean triples) – BluePeppers
@BluePeppers Tôi nghĩ bạn đã có nó, bởi vì sau khi "let a + b = 100', danh sách đó hiểu * làm * cho' [(1,1,1)] '. –