Я начал кодирование в F # около 2 месяцев назад.
Мне очень нравится этот язык программирования. Я исхожу из фона С#, и каждый раз, когда мне нужно вернуться на С#, он кажется таким громоздким и раздутым.
Но есть еще вещи, которые, по моему мнению, проблематичны в F #, и это то, к чему относятся мои вопросы:
-
Нет автоматического завершения, как VS имеет для С# правильно? Например. внутри функции, которая принимает параметр aParameter, если я пишу aPara, то автозаполнение не появляется. Есть ли функциональность внутри ВС, которая может решить эту проблему и о которой я не знаю?
-
Отладка утомительна, если не сказать больше. Поскольку F # поддерживает компоновку/цепочку или то, что вы хотите назвать, я обычно стараюсь объединить как можно больше вещей (везде, где это имеет смысл). Пример:
correctedData |> List.filter (fun (_, r, _) -> r <= 3) |> Seq.ofList |> Seq.groupBy (fun (_, r, cti) -> (r,cti)) |> Seq.map (fun ((r,cti),xs) -> (r, cti, Seq.length xs)) |> Seq.toList
И это всего лишь четверть всей моей цепочки. Всякий раз, когда я что-то ввязываю в эти цепи, мне очень сложно отлаживать, где все пошло не так.
Я делаю эту цепочку неправильно (злоупотребляя ею)? С моей точки зрения, ничто промежуточное от этой цепочки имеет смысл существовать атомарно, поэтому нет причин иметь промежуточные ценности. Но из-за этой семантической точки зрения я также теряю способность иметь промежуточные ценности, которые помогают мне отлаживать. Поэтому мне нужно вставить их в код, отладить, а затем удалить их снова. Но это потраченное впустую усилие. Есть ли способ обойти это?
Кроме того, отладка анонимной функции List.map внутри цепочки кажется неудобной и сложной по сравнению с, например, цикл for.
Я уверен, что у меня что-то не хватает, и что мой текущий способ отладки, вероятно, не оптимален - не длинным выстрелом - поэтому любые предложения приветствуются.