Tôi biết một chút về FORTH vì vậy tôi sẽ giới hạn bản thân mình về điều đó. Nó là một ngôn ngữ cấp thấp, cho phép bạn là lập trình viên truy cập vào tất cả các tài nguyên phần cứng. Vì vậy, bạn có thể làm bất cứ điều gì bạn thích.
Đồng thời
Để có các chương trình song song (chỉnh sửa: được sử dụng để nói các chương trình đồng thời thực sự), bạn cần ít nhất hai đơn vị thực thi (CPU-s). Sẽ là khá tầm thường khi thực hiện một từ trong FORTH, ví dụ: "chạy từ này trên bộ xử lý 2 bằng hai đối số này". Từ này sẽ phân bổ hai ngăn xếp cần thiết trên bộ xử lý 2 và bắt đầu chạy từ. Bạn sẽ cần phải hạn chế phần nào chính xác những cấu trúc bạn có thể sử dụng trong chương trình đó.
Nếu số lượng chương trình đồng thời lớn hơn số lượng đơn vị thực thi, bạn sẽ sử dụng chương trình "giả ngẫu nhiên". Về cơ bản có hai cách để làm điều đó: coroutines hoặc đa nhiệm phòng ngừa. Trong mọi trường hợp đều có thể (không dễ, nhưng được mô tả kỹ trong tài liệu) làm thế nào để đạt được điều này và FORTH cho phép bạn truy cập tất cả những thứ cấp thấp bạn cần.
Đánh giá lười biếng
Tất nhiên bạn có thể làm điều này trong FORTH như trong bất kỳ ngôn ngữ lập trình nào. Nó sẽ không thanh lịch hoặc "tích hợp" như Haskell nói. Tôi sẽ sử dụng một ví dụ rất ngây thơ.
Ý tưởng là bạn định nghĩa một "hàm" (được sử dụng một cách lỏng lẻo ở đây) để trả về một tập hợp các thứ. Một ví dụ sẽ là một hàm trả về tất cả các số nguyên. Sau đó, bạn thực hiện các thao tác trên bộ này và khi bạn hoàn thành đưa ra kết quả. Ví dụ: bạn có thể muốn tính tổng tất cả các số nguyên cho đến khi tổng lớn hơn 1000. Một đánh giá không lười biếng trước tiên sẽ phân bổ tất cả các số nguyên dưới dạng một tập hợp, điều này là không thể vì có vô số số nguyên. Sau đó nó sẽ bắt đầu làm việc trên bộ này. Một triển khai lười biếng sẽ có cách "cho tôi giá trị tiếp theo trong tập hợp". Làm điều này thực sự chỉ cần một biến trong funktion "giá trị cuối cùng cho".
Haskell làm mọi thứ theo cách này. Tất nhiên nó xử lý các tình huống phức tạp hơn nhưng ý tưởng là như nhau. Nó tạo ra sự đánh giá theo cách cho phép bạn là một lập trình viên tập trung vào vấn đề, chứ không phải làm thế nào để giải quyết nó.