Tôi thấy ưu tiên và khả năng kết hợp là một trở ngại lớn đối với tôi để hiểu ngữ pháp đang cố gắng thể hiện ở cái nhìn đầu tiên về mã haskell.Ưu tiên Haskell: Lambda và nhà điều hành
Ví dụ,
blockyPlain :: Monad m => m t -> m t1 -> m (t, t1)
blockyPlain xs ys = xs >>= \x -> ys >>= \y -> return (x, y)
Bằng cách thử nghiệm, cuối cùng tôi đã nhận nó có nghĩa là,
blockyPlain xs ys = xs >>= (\x -> (ys >>= (\y -> return (x, y))))
thay vì
blockyPlain xs ys = xs >>= (\x -> ys) >>= (\y -> return (x, y))
Những công trình như:
*Main> blockyPlain [1,2,3] [4,5,6]
[(1,4),(1,5),(1,6),(2,4),(2,5),(2,6),(3,4),(3,5),(3,6)]
Tôi có thể lấy thông tin từ ghci cho (>> =) làm toán tử, (infixl 1 >> =).
Nhưng không có thông tin cho -> vì đó không phải là toán tử.
Có thể ai đó trong số các bạn đưa ra một số tham chiếu để làm cho điều ngữ pháp này dễ nắm bắt hơn không?
[Haskell Báo cáo] (http://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-220003) là tham chiếu chính xác cho cú pháp Haskell, mặc dù có lẽ ngữ pháp BNF hơi thấp đối với câu hỏi mà bạn đang sử dụng hỏi ...? –