← All posts tagged fsi

Тут у гипотетического читателя прошлого поста, ошарашенного феноменальной полезностью файла Script.fsx, закономерно возникнет вопрос: получается, что можно открыть файл Script.fsx — и мы получим откртое окно интерпретатора, в который все нужное для работы уже подгружено. Ведь верно? Ведь правильно? Нет. Не верно. Скрипт отработает без вывода на экран и интерпретатор закроется. И это не шутка, как бы абсурдно это не звучало.

Пока у меня складывается впечатление, что самые нижние этажи F#-ада, стигийские лиды — это REPL. Предположим, вы пишете в командной строке fsi Fancy.fs — ну понятно, Fancy.fs должен существовать. Если бы вместо fsi был ghci, а вместо fs был hs, мы бы получили открытое окно интерпретатора в котором загружен модуль, можно было бы что-то делать с объявленными в модуле и импортированными функциями, конструкторами и т.д. Но мы-то имеем дело с F# и тут ничего такого не получится по ряду причин. Во-первых, не знаю как у вас, но у меня fsi при установке VS не прописался в путях, так что команда fsi просто не будет найдена. Ну это легко исправить. Дальше — хуже. Файл Fancy.fs не представляет из себя какой-то самодостаточной единицы — это просто один из кусков кода, которые нужно подгрузить в определенном порядке в духе суровых инклюдов. Ghci подгрузил бы установленные пакеты, от которых зависит открываемый файл, но fsi это делать не станет. Да, FSharp.PowerPack в Assembly Cache — ну так что с того? Давайте, не ленитесь, ручками, ручками — #r "FSharp.PowerPack.dll";; Автоматика, модульность — это все зло и грех, все необходимо отсечь: программист на F# должен знать только келью, духовника и все!