Skip to content

Instantly share code, notes, and snippets.

@ImaginaryDevelopment
ImaginaryDevelopment / MadProps.fs
Created April 21, 2022 17:14
Using clause does not dispose in this case
type Foo () =
do
printfn "I'm constructed"
member x.Value
with get() = 0
and set (v:int) = invalidOp "Hello world!"
interface IDisposable with
member x.Dispose() =
printfn "IDisposed!"
@ImaginaryDevelopment
ImaginaryDevelopment / Sample1.fs
Created December 30, 2021 22:02
CrabHelper Guessing game
let inline tryParse f x =
match f x with
| true, v -> Some v
| _ -> None
// this version does not compile:
//let (|Parse|_|) (str: string) : int option = tryParse Int32.TryParse str
let inline tryParseInt (x:string) = x |> tryParse Int32.TryParse
// from https://gist.github.com/ImaginaryDevelopment/952b3a9afc4f2fa3c4631d43f760748a
module GistTemplate.BReusable
open System
open System.Collections.Generic
open System.Diagnostics
let inline guardAgainstNull msg (o:obj) =
if isNull o then
nullArg msg
let (|GuardNull|) msg (x:'T) =
@ImaginaryDevelopment
ImaginaryDevelopment / ReflectionExploration.fsx
Last active December 16, 2021 18:27
F# object reflection exploration
module ResizeArray =
let init i f =
Seq.init i f
|> ResizeArray
let (|IsSeq|_|) (t:Type) =
t.GetInterfaces() |> Seq.choose(fun t ->
if t.IsGenericType && t.GetGenericTypeDefinition() = typedefof<seq<_>> then Some("iseq",t.GenericTypeArguments) else None
)
|> Seq.tryHead
@ImaginaryDevelopment
ImaginaryDevelopment / LogBuilder.fs
Created November 18, 2021 16:11
LogBuilder Computation Expression
let logStep action =
let res = action <| printf "%s... "
printfn "Complete."
res
type LoggingBuilder() =
member this.Bind(x, f) =
logStep x |> f
member this.Zero() = ignore
member this.Return(x) = x
@ImaginaryDevelopment
ImaginaryDevelopment / ohno.ts
Created October 21, 2021 16:05
Code cleaning comparison
onNotifyAcknowledgedPositions() {
const companyState = this.memberState;
if (companyState &&
companyState['BUY'] && companyState['SELL'] &&
(isFalsy(companyState['BUY'].addedRequests) || companyState['BUY'].addedRequests.length === 0) &&
(isFalsy(companyState['BUY'].updatedRequests) || companyState['BUY'].updatedRequests.length === 0) &&
(isFalsy(companyState['BUY'].deletedRequests) || companyState['BUY'].deletedRequests.length === 0) &&
(isFalsy(companyState['BUY'].addedComments) || companyState['BUY'].addedComments.length === 0) &&
(isFalsy(companyState['BUY'].deletedComments) || companyState['BUY'].deletedComments.length === 0) &&
@ImaginaryDevelopment
ImaginaryDevelopment / script.fsx
Created October 21, 2021 00:33
Prototype hosts file blocker for child
// hosts file lock of certain sites, and unlocking, while not interfering with other entries
// WIP
let winpath =
"C:\\windows"
// Util.GetPassword("WindowsPath")
if not <| Directory.Exists winpath then failwithf "Unable to locate path '%s'" winpath
let sites = [
"discord.com"
// This file is part of Silk.NET.
//
// You may modify and distribute Silk.NET under the terms
// of the MIT license. See the LICENSE file for details.
module Silk.NET.Maths.Tests.Box2Tests
open System
open Expecto
open FsCheck
@ImaginaryDevelopment
ImaginaryDevelopment / knowledge.fs
Created May 7, 2020 17:52
wurm_food-knowledge.py
module Cereal =
// importing a namespace from a referenced package
open Newtonsoft.Json
open Newtonsoft.Json.Linq
let serialize value = JsonConvert.SerializeObject(value)
let deserialize<'t>(raw:string) = JsonConvert.DeserializeObject<'t>(raw)
let read (x:string) = System.IO.File.ReadAllText(x)
open Cereal
let MAX_INGREDIENT_ID = 138
@ImaginaryDevelopment
ImaginaryDevelopment / blah.txt
Created June 19, 2019 04:12
coh spines fire build
Hero Plan by Mids' Hero Designer 1.962
http://www.cohplanner.com/
The Krab Louse: Level 50 Magic Brute
Primary Power Set: Spines
Secondary Power Set: Fiery Aura
Power Pool: Leaping
Power Pool: Speed
Power Pool: Leadership
Power Pool: Fighting