なぜ次のような出力が得られますか?F#List.lengthは常に1を返しますか?
> List.length [1,2,3];;
val it : int = 1
> List.length [1,2,3,4];;
val it : int = 1
私は3と4を得る予定です!間違った関数呼び出しを使用していますか?
なぜ次のような出力が得られますか?F#List.lengthは常に1を返しますか?
> List.length [1,2,3];;
val it : int = 1
> List.length [1,2,3,4];;
val it : int = 1
私は3と4を得る予定です!間違った関数呼び出しを使用していますか?
これは機能に関するものではなく、リストの項目を入力する方法です。 ;
の代わりに,
を使用してください。
> List.length [1,2,3];;
val it : int = 1
> List.length [1;2;3];;
val it : int = 3
理由は[1,2,3]
はただ一つの項目とのタプルのリストであるということである。
> [1,2,3];;
val it : (int * int * int) list = [(1, 2, 3)]
は出力に(..)
を参照してください - 悲しげにあなたが(..)
外でタプルを入力することができ、多くの秋それのために
;
を代わりに使用すると、のintsのリストが3つの要素で表示されます。
> [1;2;3];;
val it : int list = [1; 2; 3]
タプルカッコのオプション性はなぜ悲しいことでしょうか?その定型句の必要はありません:-)リストがもっと意味のあるものに使われると、型はこのようなエラーを防ぎます。 – CaringDev
これは、一貫性のあるIMOのことです。これは、入力[1,2,3]を(出力のように)[(1,2,3)]と比較すると読みやすくなります。クリア? - これは常時起こる一般的な間違いです。特にHaskell、Javascript、Pythonのようなものを知っていれば、 '、'を使用します。 – Carsten
可読性は文脈の関数でもあります。ここで私はカッコを入れます。例えば。関数型のシグネチャでは、型付きのタプルを使用して、それらを一貫性のあるままにしておくと読みやすくなります。新しい開発者 '(1、" a "):int * string'、つまり'、 'と' * 'は最初は難しいです。しかし、IMOの言語は、最初の習得の前に(安全性が損なわれていない限り)あなたができること(いいDSLなど)を評価する必要があります。他のすべてのツールと同じように、それをやりすぎないようにする方法(スカラコレクション演算子など)も学ぶ必要があります。このために威力を失うことは悲しいでしょう。 – CaringDev
これは下に回答されましたが、気分が悪くありません。これは実際にはよくある間違いです:) – TheQuickBrownFox