#f#
#f#
Вопрос:
Насколько мне известно, F # не обрабатывает printfn, как другие функции, из-за зависимости его типа от строкового параметра. Может ли кто-нибудь объяснить мне, почему это мешает мне делать
let printn = printfn "%A"
В ошибке указано, что тип выведен ('a -> unit)
и что мне нужно добавить явный параметр или аннотацию типа. Почему? Меня вполне устраивает тип, к которому он это относил. Кроме того, если я добавлю явную точку, она по-прежнему будет иметь тот же тип.
Ответ №1:
Потому printn
что это было бы простое значение так, как вы его определяете. И значения не могут быть общими в .ЧИСТАЯ среда выполнения.
Сделайте параметр явным, чтобы он был функцией:
let printn value = printfn "%A" value
Для получения дополнительной информации см. Раздел Ограничение значений в MSDN.
Комментарии:
1. Я в замешательстве. Как
printfn
тогда вообще работает? Как мне передать второй параметр, если он принимает только один и возвращает значение?