{"cells":[{"cell_type":"markdown","metadata":{},"source":["# CommonFSharp (Polyglot)"]},{"cell_type":"code","execution_count":1,"metadata":{"duration_ms":10114,"language":"fsharp"},"outputs":[],"source":["#!import ../../lib/fsharp/Notebooks.livemd"]},{"cell_type":"code","execution_count":2,"metadata":{"duration_ms":196,"language":"fsharp"},"outputs":[],"source":["#!import ../../lib/fsharp/Testing.livemd"]},{"cell_type":"code","execution_count":3,"metadata":{"duration_ms":79,"language":"fsharp"},"outputs":[],"source":["#!import ../../lib/fsharp/Common.fs"]},{"cell_type":"code","execution_count":4,"metadata":{"duration_ms":13,"language":"fsharp"},"outputs":[],"source":["open Common"]},{"cell_type":"markdown","metadata":{},"source":["## getUnionCaseName"]},{"cell_type":"code","execution_count":5,"metadata":{"duration_ms":16,"language":"fsharp"},"outputs":[],"source":["let inline getUnionCaseName<'T> (x: 'T) =\n","    match Reflection.FSharpValue.GetUnionFields(x, typeof<'T>) with\n","    | case, _ -> case.Name"]},{"cell_type":"code","execution_count":6,"metadata":{"duration_ms":65,"language":"fsharp"},"outputs":[{"name":"stdout","output_type":"stream","text":["\"Critical\""]}],"source":["///- --test\n","\n","TraceLevel.Critical\n","|> getUnionCaseName\n","|> _assertEqual (nameof TraceLevel.Critical)"]}],"metadata":{"kernelspec":{"display_name":"Spiral","language":"spiral","name":"spiral"}},"nbformat":4,"nbformat_minor":5}