#!meta {"kernelInfo":{"defaultKernelName":"spiral","items":[{"aliases":[],"name":"spiral"}]}} #!markdown # Common (Polyglot) #!fsharp #!import ../../lib/fsharp/Notebooks.dib #!import ../../lib/fsharp/Testing.dib #!fsharp #if !INTERACTIVE open Lib #endif #!fsharp let nl = System.Environment.NewLine let q = @"""" #!fsharp let inline cons head tail = head :: tail #!markdown ## memoize #!fsharp let inline memoize fn = let result = lazy fn () fun () -> result.Value #!markdown ## TraceLevel #!fsharp type TraceLevel = | Verbose | Debug | Info | Warning | Critical let inline _locals () = "" #!markdown ## trace #!fsharp let to_trace_level = function | Verbose -> SpiralTrace.TraceLevel.US0_0 | Debug -> SpiralTrace.TraceLevel.US0_1 | Info -> SpiralTrace.TraceLevel.US0_2 | Warning -> SpiralTrace.TraceLevel.US0_3 | Critical -> SpiralTrace.TraceLevel.US0_4 let trace level fn locals = let level = level |> to_trace_level SpiralTrace.trace level fn locals #!fsharp //// test trace Debug (fun () -> "test") _locals