Некоторые основные отличия языка программирования Clean от Haskell:
- Модульность. 1 В Clean используются отдельные модули определения и реализации, в то время как в Haskell — единая структура модуля и явный контроль экспорта. 1
- Строгость. 1 Хотя в обоих языках по умолчанию используются ленивые вычисления, Clean предлагает аннотации типов для строгости (!) и строгого let (#!). 1
- Система типов, гарантирующая уникальность. 34 В Clean она обеспечивает эффективное генерирование кода за счёт деструктивных обновлений и моделирует побочные эффекты с помощью парадигмы «мир как значение». 1
- Генераторы. 1 Clean напрямую интегрирует общие функции, в отличие от подхода Haskell на основе библиотек. 1
- Конcurrency. 1 Clean использует более явный и, возможно, более низкоуровневый подход к параллельности по сравнению с абстрактной монадой IO в Haskell. 1
Кроме того, в основном у Haskell больше синтаксического сахара, чем у Clean. 3