f# duplicate definition

2019-02-17 08:40发布

问题:

in F# powerpack math provider source code: I saw this (in lapack_service_netlib.fs)

member this.dgemm_((a:matrix),(b:matrix)) =  
 // allocate results
  let c = Matrix.zero (m) (n)
  // transpose
  let c = Matrix.transpose c
...
  // fixups
  let c = Matrix.transpose c
  // result tuple
  c

Why does this complile? does c get duplicate definition?

回答1:

This is shadowing; at function/class/member scope, any local let bindings will be shadowed by subsequent let bindings to the same name.

See also Shadowing and Nested function



标签: f# shadowing