2009-09-21 17 views
9

Tôi chỉ học Haskell, và cố gắng tìm ra cách thành ngữ nhất để thực hiện một thuật toán thị giác.Có tốt hơn khi sử dụng đơn nguyên của Tiểu bang hay chuyển qua trạng thái đệ quy?

Mã demo tôi tìm thấy sử dụng đơn nguyên trạng thái, nhưng nó có vẻ đơn giản hơn với tôi (tôi chỉ là người mới bắt đầu) để chuyển trạng thái đệ quy. Tôi đang thiếu gì ở đây? Có vấn đề về hiệu năng không?

tìm mã tại địa chỉ: http://www.finalcog.com/bresenham-algorithm-idiomatic-haskell

Cảm ơn,

Chris.

+0

Tái đệ quy có thể chậm hơn và khiến ngăn xếp của bạn phát triển –

+7

@Tay đệ quy cũng có thể nhanh hơn và chạy trong không gian ngăn xếp liên tục. – Amok

+5

Thật đáng để chỉ ra rằng các đơn vị nhà nước và ST ("Tiểu bang Thread", mà bài viết của bạn sử dụng) monad là không giống nhau. – jrockway

Trả lời

11

Nó có thể trở thành một chút tiết để vượt qua trạng thái ở khắp mọi nơi. Ngoài ra, các đơn vị nhà nước nổi tiếng bởi hầu hết các lập trình viên haskell để họ sẽ biết những gì bạn đang làm. Nếu bạn quay tay của riêng bạn, bên ngoài một đơn nguyên, có thể khó khăn để phân biệt mã của bạn.

Tôi thấy đơn vị trạng thái gọn gàng để đóng gói các thay đổi trạng thái, rõ ràng phần nào của mã của bạn là trạng thái (tức là thay đổi hoặc phụ thuộc vào trạng thái) w.r.t. phần còn lại của những thứ thuần khiết.

+1

Học cách sử dụng tốt monads cũng rất quan trọng, do đó, sử dụng chúng trong một tình huống mà bạn biết làm thế nào bạn sẽ đạt được điều tương tự nếu không có thể là một cách tốt để tìm hiểu. – Amok

10

Đối với các chương trình lớn hơn, tốt hơn là ẩn hệ thống ống nước qua tiểu bang trong đơn nguyên. Có ít nguy cơ sai sót hơn.

3

Lợi thế của việc sử dụng đơn nguyên để chuyển trạng thái thay vì chuyển sang trạng thái một cách rõ ràng, là có nhiều bộ phối hợp hữu ích được xác định cho các đơn vị mà bạn có thể sử dụng.

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