Introducing the Float xAPI Library for F#

Conferences, Experience API, Industry News Comments (0)

As we prepare to attend iFest 2018, we’re happy to share the result of ongoing research at Float to pursue safer and more predictable code. The Float xAPI library is written in F#, a functional-first programming language that helps to produce code that minimizes unintended side effects. As F# targets the .NET runtime, our xAPI library can be used by applications built on Xamarin or ASP.NET just like any other .NET library.

The current implementation is still very early but defines the standard xAPI types such as statements, verbs, actors, and a variety of objects on which statements can act. We use structs to enforce value semantics, provide and use interfaces wherever possible to prevent leaking implementation details, and use immutable types to prevent unintended behavior. Strict type requirements help ensure that all objects are valid at the time of construction, and we use library types to prevent loosely defined properties. While work on the library is still ongoing, we hope that the current codebase will show the intentions behind the library and give an indication of the future.

From here, we hope to work to fill out the rest of the types in the xAPI specification and provide a path to serialization so that statements can be shared with other applications. From there we hope to implement an example LRS using the types defined in the library, and eventually, share a stable version of the library on NuGet. Eventually, we would like to use F* to formally verify the xAPI specification, and investigate the use of alternative compilers to make this library available to JavaScript and other common use cases.

We value your feedback on the library and look forward to working with the community to provide a modern and safe xAPI implementation.

The following two tabs change content below.

» Conferences, Experience API, Industry News » Introducing the Float xAPI Library...
On August 27, 2018
, ,

Leave a Reply

Your email address will not be published. Required fields are marked *

« »