{"cells":[{"cell_type":"markdown","metadata":{},"source":["# Common (Polyglot)"]},{"cell_type":"code","execution_count":1,"metadata":{"duration_ms":10704,"language":"fsharp"},"outputs":[],"source":["#!import ../../lib/fsharp/Notebooks.livemd"]},{"cell_type":"code","execution_count":2,"metadata":{"duration_ms":220,"language":"fsharp"},"outputs":[],"source":["#!import ../../lib/fsharp/Testing.livemd"]},{"cell_type":"code","execution_count":3,"metadata":{"duration_ms":16,"language":"fsharp"},"outputs":[],"source":["#if !INTERACTIVE\n","open Lib\n","#endif"]},{"cell_type":"code","execution_count":4,"metadata":{"duration_ms":27,"language":"fsharp"},"outputs":[],"source":["let nl = System.Environment.NewLine\n","let q = @\"\"\"\""]},{"cell_type":"code","execution_count":5,"metadata":{"duration_ms":14,"language":"fsharp"},"outputs":[],"source":["let inline cons head tail = head :: tail"]},{"cell_type":"markdown","metadata":{},"source":["## memoize"]},{"cell_type":"code","execution_count":6,"metadata":{"duration_ms":15,"language":"fsharp"},"outputs":[],"source":["let inline memoize fn =\n","    let result = lazy fn ()\n","    fun () -> result.Value"]},{"cell_type":"markdown","metadata":{},"source":["## TraceLevel"]},{"cell_type":"code","execution_count":7,"metadata":{"duration_ms":30,"language":"fsharp"},"outputs":[],"source":["type TraceLevel =\n","    | Verbose\n","    | Debug\n","    | Info\n","    | Warning\n","    | Critical\n","\n","let inline _locals () = \"\""]},{"cell_type":"markdown","metadata":{},"source":["### to_trace_level"]},{"cell_type":"code","execution_count":8,"metadata":{"duration_ms":13,"language":"fsharp"},"outputs":[],"source":["let to_trace_level = function\n","    | Verbose -> SpiralTrace.TraceLevel.US0_0\n","    | Debug -> SpiralTrace.TraceLevel.US0_1\n","    | Info -> SpiralTrace.TraceLevel.US0_2\n","    | Warning -> SpiralTrace.TraceLevel.US0_3\n","    | Critical -> SpiralTrace.TraceLevel.US0_4"]},{"cell_type":"markdown","metadata":{},"source":["### from_trace_level"]},{"cell_type":"code","execution_count":9,"metadata":{"duration_ms":17,"language":"fsharp"},"outputs":[],"source":["let from_trace_level = function\n","    | SpiralTrace.TraceLevel.US0_0 -> Verbose\n","    | SpiralTrace.TraceLevel.US0_1 -> Debug\n","    | SpiralTrace.TraceLevel.US0_2 -> Info\n","    | SpiralTrace.TraceLevel.US0_3 -> Warning\n","    | SpiralTrace.TraceLevel.US0_4 -> Critical"]},{"cell_type":"markdown","metadata":{},"source":["### trace"]},{"cell_type":"code","execution_count":10,"metadata":{"duration_ms":15,"language":"fsharp"},"outputs":[],"source":["let trace level fn locals =\n","    let level = level |> to_trace_level\n","    SpiralTrace.trace level fn locals"]},{"cell_type":"code","execution_count":11,"metadata":{"duration_ms":23,"language":"fsharp"},"outputs":[{"name":"stdout","output_type":"stream","text":["11:54:03 \u001B[94md\u001B[0m #1 test"]}],"source":["///- --test\n","\n","trace Debug (fun () -> \"test\") _locals"]}],"metadata":{"kernelspec":{"display_name":"Spiral","language":"spiral","name":"spiral"}},"nbformat":4,"nbformat_minor":5}