LINUX.ORG.RU

История изменений

Исправление AndreyKl, (текущая версия) :

(дада в этом самом ООП такого никогдаб не произошло)

Этого никогда бы не произошло в языке с зависимыми типами. Вот пример реализации сетевого протокола.

http://docs.idris-lang.org/en/latest/st/examples.html

Как можно видеть, всё состояние выражено в типах. Т.е. компилятор, для нашего случая, просто не позволил бы вызвать любую функцию доступную «авторизованному» подмножеству функций из неавторизованного состояния. И пишется это легко и элегантно, с полной компил-таймовой проверкой (в отличие от рантаймовой при реализации стейт-машин на си).

(вот тут получше разжёвано и пример попроще, кому интересно http://docs.idris-lang.org/en/latest/st/machines.html )

Исправление AndreyKl, :

(дада в этом самом ООП такого никогдаб не произошло)

Этого никогда бы не произошло в языке с зависимыми типами. Вот пример реализации сетевого протокола.

http://docs.idris-lang.org/en/latest/st/examples.html

Как можно видеть, всё состояние выражено в типах. Т.е. компилятор, для нашего случая, просто не позволил бы вызвать любую функцию доступную «авторизованному» подмножеству функций из неавторизованного состояния. И пишется это легко и элегантно, с полной компил-таймовой проверкой (в отличие от рантаймовой при реализации стейт-машин на си).

(вот тут получше разжёвано на другом примере кому интересно http://docs.idris-lang.org/en/latest/st/machines.html )

Исправление AndreyKl, :

(дада в этом самом ООП такого никогдаб не произошло)

Этого никогда бы не произошло в языке с зависимыми типами. Вот пример реализации сетевого протокола.

http://docs.idris-lang.org/en/latest/st/examples.html

Как можно видеть, всё состояние выражено в типах. Т.е. компилятор, для нашего случая, просто не позволил бы вызвать любую функцию доступную «авторизованному» подмножеству функций из неавторизованного состояния. И пишется это легко и элегантно, с полной компил-таймовой проверкой (в отличие от рантаймовой при реализации стейт-машин на си).

(вот тут получше разжёвано на другом примере кому интересно http://docs.idris-lang.org/en/latest/st/examples.html )

Исправление AndreyKl, :

(дада в этом самом ООП такого никогдаб не произошло)

Этого никогда бы не произошло в языке с зависимыми типами. Вот пример реализации сетевого протокола.

http://docs.idris-lang.org/en/latest/st/machines.html

Как можно видеть, всё состояние выражено в типах. Т.е. компилятор, для нашего случая, просто не позволил бы вызвать любую функцию доступную «авторизованному» подмножеству функций из неавторизованного состояния. И пишется это легко и элегантно, с полной компил-таймовой проверкой (в отличие от рантаймовой при реализации стейт-машин на си).

Исправление AndreyKl, :

(дада в этом самом ООП такого никогдаб не произошло)

Этого никогда бы не произошло в языке с зависимыми типами. Вот пример реализации сетевого протокола.

http://docs.idris-lang.org/en/latest/st/machines.html

Как можно видеть, всё состояние выражено в типах. Т.е. компилятор, для нашего случая, просто не позволил бы вызвать любую функцию доступную «в авторизованном» подмножестве из неавторизованного состояния. И пишется это легко и элегантно, с полной компил-таймовой проверкой (в отличие от рантаймовой при реализации стейт-машин на си).

Исходная версия AndreyKl, :

(дада в этом самом ООП такого никогдаб не произошло)

Этого никогда бы не произошло в языке с зависимыми типами. Вот пример реализации сетевого протокола.

http://docs.idris-lang.org/en/latest/st/machines.html

Как можно видеть, всё состояние выражено в типах. Т.е. компилятор, для нашего случая, просто не позволил бы вызвать любую функцию доступную «в авторизованном» подмножестве из неавторизованного состояния. И пишется это легко и элегантно.