Almost too much to keep up with this week. Most notably, Roger Castillo gave a fantastic talk on F#’s Language Oriented Programming features. Also interesting, the Microsoft Research F7 project, Symbolic Differentiation, and tail call optimized corecursion.
Roger Castillo’s Language Oriented Programming in F#
Roger will present one approach to Language Oriented Programming in F#, a technique in which software designers borrow techniques from language design to organize software architectures.
The most advanced F# talk I’ve seen to date. In this talk, Roger examines some of F#’s LOP features and discusses a methodology for leveraging said features to build DSLs.
F7: Refinement Types for F#
F7 is an enhanced typechecker for the F# programming language. F7 supports static checking of properties expressed with refinement types. Our motivation is to check various security properties of F# implementation code by typing.
A very exciting Microsoft Research project. Static checking of cryptographic protocols and access control mechanisms could do much for safety if used generally.
Symbolic Differentiation in C#/F#
[A] simple C#/F# library for Symbolic Differentiation and whatever else comes to mind.
Some features, such as parallel computation of expressions, are only supported in F#.
Jomo Fisher’s Adventures in F# – Corecursion
Mutual recursion is a useful feature and I was sure F# must have a way to support it. I searched around quite a bit, but I didn't know the right question to ask the search engines. Eventually, I got some help from my friend Luke Hoban.
I was interested to find out that tail recursion optimization works with corecursion as well.
F# Cheat Sheet
This sheet glances over some of the common syntax of the F# language. It is designed to be kept close for those times when you need to jog your memory on something like loops or object expressions.
Very useful to have on hand when teaching F#.
