Я знаю трохи про FORTH, тому обмежуся цим. Це мова низького рівня, що надає вам як програмісту доступ до всіх апаратних ресурсів. Тож ви можете робити все, що завгодно.
Паралельність
Для того, щоб мати паралельні програми (редагувати: раніше говорити про реальні паралельні програми), вам потрібно принаймні дві одиниці виконання (CPU). Було б досить тривіально реалізувати слово в FORTH, кажучи, наприклад, "запустити це слово на процесорі 2, використовуючи ці два аргументи". Слово виділило б два необхідні стеки на процесорі 2 і почало виконувати слово. Вам потрібно буде дещо обмежитися саме тим, які саме конструкції ви можете використовувати в цій програмі.
Якщо кількість одночасних програм більше, ніж кількість одиниць виконання, ви б перейшли до програм "псевдопаралель". В основному це можна зробити двома способами: супровідні процедури або попереджувальна багатозадачність. У будь-якому випадку можна (не просто, але добре описано в літературі), як цього досягти, і FORTH дозволяє отримати доступ до всіх необхідних матеріалів низького рівня.
Ледача оцінка
Звичайно, ви можете зробити це в FORTH, як і майже на будь-якій мові програмування. Це не буде настільки ошатно чи «вбудовано», як у скажінні Haskell. Я буду використовувати дуже наївний приклад.
Ідея полягає в тому, що ви визначаєте "функцію" (тут використовується вільно), яка повертає набір речей. Одним із прикладів може бути функція, яка повертає всі цілі числа. Потім ви робите операції на цьому наборі, і коли ви закінчите, даєте результат. Наприклад, ви можете підсумовувати всі цілі числа до тих пір, поки сума не перевищить 1000. Оцінка, яка не лінива, спочатку виділить усі цілі числа як набір, що неможливо, оскільки існує нескінченна кількість цілих чисел. Потім він би почав працювати над цим набором. Ледача реалізація мала б спосіб "дати мені наступне значення у наборі". Для цього дійсно потрібна лише одна змінна у функції "останнє значення дай".
Haskell робить все так. Звичайно, він вирішує складніші ситуації, але ідея така ж. Це додає оцінку таким чином, що дозволяє програмісту зосередитись на проблемі, а не на тому, як її вирішити.