Делаем printfn / IO чистым в F # - PullRequest
1 голос
/ 01 июля 2011

Похоже, в Интернете не так много времени, чтобы убедиться, что функции остаются чистыми в F #.

Чтобы создать пример, есть ли способ сделать printfn / IO чистым в F #?

Ответы [ 2 ]

9 голосов
/ 02 июля 2011

вы можете поискать в F # реализации монады ввода-вывода Haskell. Вот хороший пример.

0 голосов
/ 01 июля 2011

Печать в консоль по определению изменяет состояние (состояние консоли) и имеет побочные эффекты (например, удаление части буфера консоли).

Если вы используете какой-то кодConConcts или тому подобноевам следует рассмотреть возможность выписать результат функции в другом месте или использовать утверждение ( Contract.Assume или Contract.Assert (используется для статических утверждений)) для более легкого подтверждения того, что вы кодируетеработы.

...