Skip to content

Instantly share code, notes, and snippets.

View altbodhi's full-sized avatar
🏠
Working from home

altbodhi

🏠
Working from home
View GitHub Profile
@altbodhi
altbodhi / progress.fsx
Created September 21, 2018 09:19
Test work IProgress interface in fs
open System.IO
open System.Net
open System.Text
open System
let httpAsync (progress : IProgress<string>) (url : string) = async {
let req = System.Net.WebRequest.Create(url)
use! resp = req.AsyncGetResponse()
progress.Report(sprintf "%s AsyncGetResponse" url)
use stream = resp.GetResponseStream()
@altbodhi
altbodhi / io.fsx
Created August 22, 2019 09:52
F# implements write and writeln like as turbo pascal
open System
open Microsoft.FSharp.Reflection
let readln = Console.ReadLine
let writeln = fun a ->
let args = if FSharpType.IsTuple(a.GetType()) then FSharpValue.GetTupleFields(a) else [|a|]
let fmt = args |> Array.indexed |> Array.fold (fun s e -> s + (sprintf "{%d}" (fst e))) ""
Console.WriteLine(fmt.Trim(), args)
let write = fun a ->
let args = if FSharpType.IsTuple(a.GetType()) then FSharpValue.GetTupleFields(a) else [|a|]
@altbodhi
altbodhi / io.pas
Created August 22, 2019 09:57
Nemerle implements write and writeln like as turbo pascal
#pragma indent
// io.n
using System.Console;
macro writeln (params a: array[expr])
mutable exps = [];
foreach(e in a)
exps = <[ Write($e); ]> :: exps;
exps = <[ WriteLine();]> :: exps;
exps = exps.Reverse();
open System
type Resource () =
interface IDisposable with
member it.Dispose() =
do printfn "Object %A Disposed" it
use r = Resource()
(r :> IDisposable).Dispose()
public abstract class Result<TValue, TError>
{
public bool IsOk => this is Ok;
public sealed class Ok : Result<TValue, TError>
{
public TValue Value { get; }
internal Ok(TValue value) => Value = value;
}
public sealed class Err : Result<TValue, TError>
@altbodhi
altbodhi / nemerle-web.pas
Created July 1, 2020 13:12
nemerle http server
using System;
using System.Console;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using Nemerle;
using Nemerle.Async;
@altbodhi
altbodhi / nemerle-sample.pas
Created July 1, 2020 13:15
Nemerle Sample
using System.Console;
using System.Threading;
using System.Threading.Tasks;
using Nemerle;
using Nemerle.Async;
enum Tone {
| REST = 0
| GbelowC = 196
| A = 220
let now () = System.DateTime.Now.ToString("s")
type CacheCommand<'id, 'result> =
| Get of 'id * AsyncReplyChannel<Result<'result, string>>
| Clear
type Cache(getter) =
let mailbox =
MailboxProcessor.Start(fun inbox ->
module TickTocks exposing(..)
import Browser
import Html exposing (..)
import Html.Attributes exposing (style)
import Task
import Time
main =
Browser.element
{ init = init
, view = view
// This sample will guide you through elements of the F# language.
//
// *******************************************************************************************************
// To execute the code in F# Interactive, highlight a section of code and press Alt-Enter in Windows or
// Ctrl-Enter Mac, or right-click and select "Send Selection to F# Interactive".
// You can open the F# Interactive Window from the "View" menu.
// *******************************************************************************************************
//
// For more about F#, see:
// http://fsharp.org