Skip to content

Instantly share code, notes, and snippets.

Avatar

Tuomas Hietanen Thorium

View GitHub Profile
@Thorium
Thorium / Emojis.fs
Created Jun 3, 2020
Coding with Emojis
View Emojis.fs
// In Windows you can press WindowsKey+"." to open Emoji menu.
let ``🍕`` = "🥓" + "🍍"
//val ( 🍕 ) : string = "🥓🍍"
@Thorium
Thorium / myvisitor.fs
Created Nov 8, 2019
F# LINQ-Expression-tree visitor
View myvisitor.fs
// A simple expression tree visitor, to inject a lambda inside another lambda parameters.
open Microsoft.FSharp.Linq.RuntimeHelpers
open System
open System.Linq.Expressions
//F#-helper method for Linq.Expressions: fssnip.net/ts/title/F-lambda-to-C-LINQ-Expression
module Lambda =
let toExpression (``f# lambda`` : Quotations.Expr<'a>) =
``f# lambda``
|> LeafExpressionConverter.QuotationToExpression
@Thorium
Thorium / Program.fs
Last active Apr 24, 2019
Creating graphical visualisation of a Markov chain
View Program.fs
module GraphVizSample
open GraphVizWrapper
open GraphVizWrapper.Commands
open GraphVizWrapper.Queries
open System
open System.Configuration
open System.Drawing
open System.IO
@Thorium
Thorium / uaparse.fs
Last active Feb 19, 2019
Parsing UserAgent strings with FSharp
View uaparse.fs
open System
open System.IO
open System.Net
open System.Text.RegularExpressions
let req = HttpWebRequest.Create "https://raw.githubusercontent.com/ua-parser/uap-core/master/regexes.yaml"
let resp = (new StreamReader(req.GetResponse().GetResponseStream())).ReadToEnd()
let lines = resp.Split( [| Environment.NewLine; "\r"; "\n"; "\r\n" |], StringSplitOptions.RemoveEmptyEntries)
/// Minimal YAML-file parsing
let yamlParse =
@Thorium
Thorium / bitbucket-pipelines.yml
Last active May 14, 2018
Bitbucket pipelines test to build FSharp repository
View bitbucket-pipelines.yml
# Take FSharp docker image and run Fake build script using Paket FSharp and Gulp.
image: fsharp:latest
pipelines:
default:
- step:
script:
- echo "Runs on branches that don't have specific pipeline."
# Install general utilities for building
- apt-get -qq update
@Thorium
Thorium / ftps.fs
Created Dec 5, 2017
FTPS download and upload a file
View ftps.fs
// FTPS = SSL encrypted FTP.
// SFTP = FTP over SSH.
// Set this as config, as the server may change the certificate.
let ``trusted server certificate hash`` = "603780E732DB12D0F6BA434BA8E04D141904A165"
open System
open System.IO
open System.Net
open System.Net.Security
@Thorium
Thorium / sftp.fs
Created Nov 20, 2017
SFTP with SSH.Net
View sftp.fs
// #r "../packages/SSH.NET/lib/net40/Renci.SshNet.dll"
open Renci.SshNet
open System.IO
/// FSharp Async wrapper for SSH.NET SFTP
type SftpClient with
member x.ListDirectoryAsync path =
Async.FromBeginEnd((fun(iar,state) ->
@Thorium
Thorium / DecisionTree.fs
Last active May 16, 2018
Wine-quality decision-tree using Accord.Net from F#
View DecisionTree.fs
(*
Install-Package FSharp.Data
Install-Package Accord
Install-Package Accord.MachineLearning
Install-Package Accord.Math
Install-Package Accord.Statistics
*)
#if INTERACTIVE
@Thorium
Thorium / extension.fs
Created May 8, 2017
Visual Studio 2017 extension: Displaying Light Bulb Suggestions
View extension.fs
// Example follows this, translated to FSharp:
// https://msdn.microsoft.com/en-us/library/dn903708.aspx
// Just instead of copy&pasting C#, add a new F# class library and paste this code to there,
// then add that to reference to your C#-project.
// If you want to deploy without C# project, see e.g. this:
// You need to use some VSIX-package to deploy the code:
// https://github.com/fsharp-vsix/FsVSIX
@Thorium
Thorium / ml.fs
Created Mar 28, 2017
Using machine learning tool Accord.Net from F#
View ml.fs
// This example uses the same data and methods as
// http://accord-framework.net/docs/html/T_Accord_Statistics_Models_Regression_LogisticRegression.htm
#I @"./packages"
#r @"FSharp.Data.2.3.2/lib/net40/FSharp.Data.dll"
#r @"Accord.3.4.0/lib/net45/Accord.dll"
#r @"Accord.MachineLearning.3.4.0/lib/net45/Accord.MachineLearning.dll"
#r @"Accord.Math.3.4.0/lib/net45/Accord.Math.Core.dll"
#r @"Accord.Math.3.4.0/lib/net45/Accord.Math.dll"
#r @"Accord.Statistics.3.4.0/lib/net45/Accord.Statistics.dll"
You can’t perform that action at this time.