Похоже, в Интернете не так много времени, чтобы убедиться, что функции остаются чистыми в F #.
Чтобы создать пример, есть ли способ сделать printfn / IO чистым в F #?
вы можете поискать в F # реализации монады ввода-вывода Haskell. Вот хороший пример.
Печать в консоль по определению изменяет состояние (состояние консоли) и имеет побочные эффекты (например, удаление части буфера консоли).
Если вы используете какой-то кодConConcts или тому подобноевам следует рассмотреть возможность выписать результат функции в другом месте или использовать утверждение ( Contract.Assume или Contract.Assert (используется для статических утверждений)) для более легкого подтверждения того, что вы кодируетеработы.