Adventures in F# - Miscellaneous Notes
I finished the Pluralsight course finally. I’m still studying F# 2 pomodoros a day but lately lost he motivation to publish the notes. In this post I’ll tidy up the notes. In order to maintain my cadence I think I had better develop more stuff instead of covering theoretical subjects.
- Upcasting / Downcasting To upcast :> operator is used. Alternatively the keyword upcast can be used to achieve the same results. It performs a static cast and the cast is determined at runtime.
Downcasting is performed by the :?> operator or downcast keyword.
- Abstract classes
Abstract classes are decorated with **[
]**. To mark members **abstract** keyword is used:
abstract Area : float with get abstract Perimeter : float with get abstract Name : string with get
- obj is shortcut for System.Object
- do bindings perform actions when the object is constructed. do bindings are usually put after let bindings so that code in the do binding can execute with a fully initialized object.
- unit is equivalent of void
- tabs are not allowed as they can indicate an unknown number of space characters and as spaces and indents matter
- ‘a means generic. By default a function f is infered as ‘a -> bool meaning it takes a general parameter and returns boolean
- Providing an incomplete list of functions result in a new function (currying)
- Getting values from tuples: fst gets the first value, snd gets the second value
- You can attach elements to a list by using the :: (cons) operator
- @ operator Concatenates two lists.
- Exceptions can be thrown using raise function. Reraise function rethrows an exception
- BigInt (C# and VB) don’t have support for arbitrarily long integers