2

これは私がやりたいことです:

type DirectionBuilder() =
    member self.Yield(()) = []

    [<CustomOperation("left")>]
    member self.Left (acc, degree) = None

    [<CustomOperation("right")>]
    member self.Right (acc, degree) = None 

    [<CustomOperation("velocity")>]
    member self.Velocity (acc, ()) = new VelocityBuilder()


and VelocityBuilder() = 
    member self.Yield(()) = []

    [<CustomOperation("accelerate")>]
    member self.Accesslarate (acc, v) = None

    [<CustomOperation("decelerate")>]
    member self.Decelerate (acc, v) = None


let direction () = new DirectionBuilder()

direction() {
    right 90
    left 30
    velocity() {
        accelerate 1
    }
}

これは行で壊れます

      velocity() {
  ----^^^^^^^^
  stdin(952,5): error FS3099: 'velocity' is used with an incorrect number of 
  arguments. This is a custom operation in this query or computation 
  expression. Expected 1 argument(s), but given 2.
  > 

このカスタム操作が実際に計算式を受け入れる必要があることを F# に説明する方法はありますか?

4

1 に答える 1