Skip to content

Instantly share code, notes, and snippets.

View jvrdev's full-sized avatar
🤔

Javier de Vega Ruiz jvrdev

🤔
View GitHub Profile
@jvrdev
jvrdev / csvLineSplit.fsx
Created March 14, 2017 09:40
Immutable CSV line splitter supporting " escaping
let csvLineSplit : string -> string [] =
let folder (acc, escaped) c =
let appendChar () = match acc with
| [] -> [[c]]
| h :: t -> (c :: h) :: t
match c, escaped with
| '\"', _ -> acc, not escaped
| ',', false -> [] :: acc, false
| _, _ -> appendChar (), escaped
Seq.fold folder ([], false)
let matches (pattern : string) (x : string) : bool =
let rec matchesL pattern x =
match pattern, x with
| [], [] | ['?'], [] | ['*'], []-> true
| '?'::pTail, xHead::xTail -> matchesL pTail xTail || matchesL pTail x
| '*'::pTail, xHead::xTail -> matchesL pTail xTail || matchesL pTail x || matchesL pattern xTail
| pHead::pTail, xHead::xTail when pHead = xHead -> matchesL pTail xTail
| _ -> false
matchesL (Seq.toList pattern) (Seq.toList x)
@jvrdev
jvrdev / gist:a3d558222e6a8e6ee18d
Last active August 29, 2015 14:24
Testing evaluation strategies for long operations
open System
open System.Threading
open System.Linq
open System.Threading.Tasks
open System.Diagnostics
[<EntryPoint>]
let main argv =
let rand = new Random()
let opCount = 5
@jvrdev
jvrdev / XpubXsubTest.cs
Created December 8, 2012 18:39
xpub/xsub sample
private void RunXpubXsubTest()
{
using (var context = new Context())
{
using (var xpub = context.Socket(SocketType.XPUB))
{
xpub.Bind("tcp://127.0.0.1:5560");
using (var xsub = context.Socket(SocketType.XSUB))
{
xsub.Bind("tcp://127.0.0.1:5561");