F#: обернуть кортежи в несколько строк
Допустим, у меня есть простой Tree
:
type Tree =
| BinaryNode of Tree * int * Tree
| Tip
member this.Sum =
match this with
| Tip -> 0
| BinaryNode(left, value, right) -> left.Sum + value + right.Sum
и я определяю дерево по:
let tree = BinaryNode( BinaryNode( Tip, 2, Tip ), 1, BinaryNode( Tip, 3, Tip ))
Но я думаю, что это действительно трудно читать, если у нас есть дерево с несколькими узлами. Поэтому я заключаю его в несколько строк, как показано ниже:
[<EntryPoint>]
let main argv =
let tree =
BinaryNode(
BinaryNode( Tip, 2, Tip ),
1,
BinaryNode( Tip, 3, Tip )
)
printf "%A" (tree.Sum)
0
Приведенный выше код работает как положено в Visual Studio
, Но когда я использую Visual Studio Code
с Ionide
, это напоминает мне, что:
Lint: запятая в экземпляре кортежа должна сопровождаться одним пробелом.
Мой вопрос:
- Я не совсем понимаю. Это плохо, чтобы обернуть кортежи в несколько строк?
- Если нет, как заставить молчать?
- Если ответ Да, как улучшить читаемость, когда у нас есть десять узлов?
1 ответ
Не думаю, что это обязательно плохо. Ну, я надеюсь, что нет, так как я делаю это все время. Особенно в таких случаях, когда эта строка была бы слишком широкой, чтобы ее можно было читать.
Насколько я могу судить, Ionide использует FSharpLint. Согласно документам, отдельные предупреждения можно отключить на уровне проекта, поместив файл XML с именем Settings.FSharpLint
в папке проекта, с желаемой конфигурацией.
Я думаю, в вашем случае файл должен иметь следующий контент:
<?xml version="1.0" encoding="utf-8"?>
<FSharpLintSettings>
<Analysers>
<TupleCommaSpacing>
<Enabled>false</Enabled>
</TupleCommaSpacing>
</Analysers>
</FSharpLintSettings>