Nếu bạn muốn sử dụng rmax
bên nmax
, pass
, và fail
mà không đi qua nó như một đối số, bạn sẽ cần phải bao gồm nó trong where
khối generateUpTo
. Nếu không, nó theo nghĩa đen, "không nằm trong phạm vi". Ví dụ:
generateUpTo rmax = check rmax
where
check pass = pAllSorted
check fail = error "insert multiple of 10!"
nmax = rmax `div` 10
pass = rmax `elem` mot
fail = rmax `notElem` mot
Nếu bạn muốn các chức năng này sẽ được sử dụng ở nhiều nơi, bạn có thể chỉ accect Rmax như một đối số:
nmax rmax = rmax `div` 10
pass rmax = rmax `elem` mot
fail rmax = rmax `notElem` mot
Lưu ý - có vẻ như bạn cũng có một số vấn đề với định nghĩa của bạn của check
... giá trị pass
và fail
chỉ có các tranh cãi là check
và không phải là các hàm bạn đã xác định ở trên.
Cập nhật
sử dụng nmax (phạm vi phiên bản bên ngoài-the-nơi-block), bạn sẽ cần phải vượt qua giá trị của Rmax với nó. Cũng giống như vậy: tuy nhiên,
nmax rmax -- function application in Haskell is accomplished with a space,
-- not parens, as in some other languages.
Lưu ý, tên rmax
trong định nghĩa của nmax
không còn đáng kể. Các chức năng này đều giống hệt nhau:
nmax rmax = rmax `div` 10
nmax a = a `div` 10
nmax x = x `div` 10
Tương tự như vậy, bạn không cần phải gọi nó với một giá trị mang tên rmax
.
nmax rmax
nmax 10 -- this is the same, assuming rmax is 10
nmax foo -- this is the same, assuming foo has your 'rmax' value.
Đối với người giữ phiếu bầu xuống câu hỏi mới bắt đầu của Haskell, Sẽ rất hữu ích nếu bạn có thể biết, để lại nhận xét về lý do bạn thực hiện việc này. – Phyx
chúng tôi sẽ out-upvote anh ta! :) nghiêm túc hơn, đã có rất nhiều sự lạm dụng cho SO của những người hỏi "làm công việc của tôi cho tôi" câu hỏi bài tập về nhà, có thể đó là một sai lầm. – gatoatigrado
@Phyx Thực ra tôi cố gắng không bỏ phiếu cho những câu hỏi của người mới, nhưng có lẽ tôi có thể giải thích người viết xuống. Phần lớn các câu hỏi này là thuật ngữ 'quá cục bộ' là gì và nói chung là không thú vị. –