strangelights.com

Main F# Site

Edit Edit
Print Print
Recent Changes Recent Changes
Subscriptions Subscriptions
Lost and Found Lost and Found
Find References Find References
Rename Rename
Search
List all versions List all versions
F Sharp And O Caml
.

In short, F# is a subset of OCAML with natural extensions for .NET interopability.

F# aims to support core Caml compatibility. This is because OCAML is a fantastic language, popular and widely used. So cross compilation of codes within this subset is taken seriously. Several internal microsoft projects cross compile between the two languages.

F# also exists on .NET and providing smooth .NET interoperation is a key design goal. F# extends the core subset with .NET friendly features, such as resolving of .NET method overloads and use and authorship of .NET objects.

Occaisionally, the two aims give rise to minor conflicts. For example, for file I/O exceptions the .NET exceptions are kept to preserve their information.

F# extends Caml with the following features:

* Nominally subtyped objects

* Properties

* Operator overloading

* Run-time types

* Type-safe marshalling

* Concurrent threads

* Overloadable hashing and comparison functions

* Unlimited-length arrays and strings

* Unicode strings

* Standards-compliant XML parsing

* Interactive sessions compiled to native code

* Memory profiling

The following OCaml features are not in F#:

* Monomorphic types (e.g. '_a)

* Functors

* Structural subtyping

* Polymorphic variants

* Recursive types

* Recursive modules

* Typesetting (the Format module)

* Development environments supporting lex and yacc

* Unix library

* Macros (camlp4)

* Non-int numeric literals in patterns

* Named substrings in lexers

Welcome to F Sharp Wiki, view the HomePage

This site supports the new NoFollow anti-spam initiative.

Recent Topics

Copyright 2005, Robert Pickering (Others where credited) | Terms of Use