]]> ]]>

CPL

Реализация языка программирования CPL

Диалект языка, описанный в статье “The Main Features of CPL” (1963 год). Существует исключительно в виде теоретического описания, и отличается от диалектов, реализованных в компиляторах London CPL и Cambridge CPL.

Примеры:

Hello, World!:

Пример для версий CPL

В общем случае команда Write принимает на вход список значений, но можно выводить и строковую константу, как здесь.

Write(Hello, World!’)

Факториал:

Пример для версий CPL

(Пример взят из описания языка) Здесь приведено рекурсивное определение факториала. Для реализации разных сценариев обработки для разных значений аргумента вместо условного перехода if используется условное выражение.

rec function Fact1[x] = (x = 0) → 1, xFact1[x — 1]

Факториал:

Пример для версий CPL

(Пример взят из описания языка) Здесь приведено итеративное определение факториала.

Выражение result of позволяет использовать блок или составную команду как выражение. Для этого тело блока должно содержать присвоение значения переменной result. В блоке можно определять локальные переменные и нельзя создавать побочные эффекты (например, изменять значения внешних переменных). Чаще всего это выражение используется при определении функций.

В теле цикла используется одновременное присвоение новых значений переменным. Поскольку обе переменные используют маленькие имена, язык позволяет пропустить знак умножения между ними — xf трактуется как x * f.

function Fact2[x] = result of
    § real f = 1
      until x = 0 do
          f, x := xf, x — 1
      result : = f §

Комментарии

]]>

blog comments powered by Disqus

]]>

Работа программистам