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
public sealed class ValidateResult : Result<bool, string>
{
}
public abstract class Result<TValue, TError>
{
public bool IsOk => this is Ok;
public sealed class Ok : Result<TValue, TError>
{
public TValue Value { get; }
@altbodhi
altbodhi / diskStatusChecker.fsx
Created September 3, 2020 02:58
Прототип новой функциональности на F# глазами C#-программиста
open System
open System.Threading
let rnd = Random(Environment.TickCount)
let disks = [ 1; 2; 3; 4 ]
type Status =
| Fail of int
| Normal of int
// 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
module TickTocks exposing(..)
import Browser
import Html exposing (..)
import Html.Attributes exposing (style)
import Task
import Time
main =
Browser.element
{ init = init
, view = view
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 ->
@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
@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;
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>
open System
type Resource () =
interface IDisposable with
member it.Dispose() =
do printfn "Object %A Disposed" it
use r = Resource()
(r :> IDisposable).Dispose()
@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();