【发布时间】:2023-03-16 21:47:01
【问题描述】:
module Digits
type Digit = Unison | Semitone | Tone | MinorThird | MajorThird | PerfectFourth | AugmentedFourth | PerfectFifth | MinorSixth | MajorSixth | MinorSeventh | MajorSeventh type 'd GeneralizedDigit = SmallDigit of 'd | Octave type 't Number = EmptyNumber | CountedNumber of 't * 't Number
let swapOctave: Digit GeneralizedDigit -> Digit GeneralizedDigit = fun x -> match x with SmallDigit Unison -> Octave | Octave -> SmallDigit Unison | g -> g
let limitLength: 'r Number -> Digit = fun a -> match a with EmptyNumber -> Unison | CountedNumber(_,EmptyNumber) -> Semitone | CountedNumber(_,CountedNumber(_,EmptyNumber)) -> Tone | CountedNumber(_,CountedNumber(_,CountedNumber(_,EmptyNumber))) -> MinorThird | _ -> MajorSeventh
在 F# 中,我可以将多个 type 定义放在同一行而不使用分号而不会出现任何问题,但是当我删除 let 语句之间的换行符时,我会收到错误 FS0010。我知道在 Haskell 语句中可以用单个分号分隔,但在 F# 中,单个分号和双分号都不起作用。如何在同一行中有多个 let 语句?
【问题讨论】: