%A格式与非公共歧视联盟的奇怪行为

MiM*_*iMo 6 f#

输出:

type Test =
  | First
  | Second
  | Third

let test = First

printf "test=%A" test
Run Code Online (Sandbox Code Playgroud)

test=First
Run Code Online (Sandbox Code Playgroud)

正如所料,但如果我声明类型internal:

type internal Test =
  | First
  | Second
  | Third

let internal test = First

printf "test=%A" test
Run Code Online (Sandbox Code Playgroud)

输出变为:

test=FSI_0019+Test
Run Code Online (Sandbox Code Playgroud)

这是设计的吗?为什么?还是一个bug?

我正在使用带有F#2.0的Visual Studio 2010

des*_*sco 11

要打印非公共成员,请使用"+"标志.它在MSDN中丢失的事实看起来像doc问题:

printf "test=%+A" test
Run Code Online (Sandbox Code Playgroud)