Я немного знаю о FORTH, поэтому я ограничусь этим. Это язык низкого уровня, предоставляющий вам как программисту доступ ко всем аппаратным ресурсам. Так что вы можете делать все что угодно.
совпадение
Для того, чтобы иметь параллельные программы (edit: используется для обозначения реальных параллельных программ), вам нужны как минимум два исполнительных блока (CPU). Было бы довольно тривиально внедрить слово в FORTH, например, «запустить это слово на процессоре 2, используя эти два аргумента». Слово будет распределять два необходимых стека на процессоре 2 и запускать слово. Вам нужно было бы ограничить себя в том, какие именно конструкции вы можете использовать в этой программе.
Если количество одновременных программ больше, чем количество исполняемых модулей, вы бы пошли для программ «псевдо-параллелла». В принципе, есть два способа сделать это: сопрограммы или упреждающая многозадачность. В любом случае возможно (не просто, но хорошо описано в литературе), как этого добиться, и FORTH позволяет вам получить доступ ко всем нужным материалам низкого уровня.
Ленивая оценка
Конечно, вы можете сделать это на FORTH, как и на любом другом языке программирования. Он не будет таким элегантным или «встроенным», как, скажем, в Haskell. Я буду использовать очень наивный пример.
Идея состоит в том, что вы определяете «функцию» (здесь используется свободно), которая возвращает набор вещей. Одним из примеров будет функция, которая возвращает все целые числа. Затем вы выполняете операции на этом множестве, и когда вы закончите, дайте результат. Например, вы можете захотеть суммировать все целые числа до тех пор, пока сумма не станет больше 1000. Не ленивая оценка сначала будет распределять все целые числа в виде набора, что невозможно, поскольку существует бесконечное число целых чисел. Затем он начал бы работать над этим набором. Ленивая реализация будет иметь способ «дать мне следующее значение в наборе». Для этого на самом деле нужна только одна переменная в функции "last value give".
Haskell делает вещи таким образом. Конечно, он обрабатывает более сложные ситуации, но идея та же. Это приукрашивает оценку таким образом, чтобы вы, как программист, могли сосредоточиться на проблеме, а не на том, как ее решить.