IntelliFactory was founded in 2004 to provide F# programming and training
services, and strategic consulting on adopting functional programming.
We have strong roots in academic research, especially in functional and domain-specific
languages (DSLs), extensible multi-language compilers, declarative and formal specification,
and string and text processing. Backed by our ever-growing research background we
have a wide range of internal development projects, and work with academia in a
number of initiatives.
IntelliFactory is one of the first companies to offer functional programming
services to the enterprise market with considerable experience in converting
and migrating commercial software to F#.
We firmly believe in functional programming and advocate the use of functional
and domain-specific languages.
We specialize in the following:
- F# software development and agile project management
- Strategic consulting on migrating to F# and tailoring existing development processes
- F# trainings, from basic to advanced level, from individual to enterprise-wide
- Research in functional programming and domain-specific languages
If you are interested in learning how we can help your business grow, get in touch
with us here.
Functional programming
Functional programming ideas have been around for at least 50 years. Most modern
programming languages (C++, C#, Java, etc.) have functional elements; in fact the
tendency is to gradually incorporate the well-proven functional ideas and features
such as generics (parametric polymorphism), higher-order functions, lazy evaluation
into these languages, resulting in mixture of imperative, object-oriented and functional
paradigms.
Learn about Functional Programming
See what Anders Heljsberg, the chief architect of C# has to say on functional programming.
Nevertheless, most languages in heavy use today (Java, C++, C#, VB) are not functional
because they lack the proper foundation, either because their absorption of functional
ideas is not yet complete or because these ideas can not be fully or easily embedded.
A good example is the lack of true polymorphism in C++ or straightforward higher-order
functions in Java.
These shortcomings cause significant loss of productivity and come at a high cost:
modern non-functional programs are more lengthy, more difficult to understand, and
most importantly more costly to develop and maintain. Savings when functional languages
are used are in the range of 20-80% in our experience which is backed by
the numerous studies and research in the effectiveness and expressiveness of various
programming languages.
Domain-specific languages (DSLs)
The use of DSLs not only gives a concise syntax to describe the problem at
hand in a less error-prone manner but also promotes the understanding of the underlying
problem domain. Why do we have to deal with pointers, for loops, or static
methods when we are writing a program that computes say the shortest path between
two cities, C1 and C2? Consider the following instead:
find Path in G(V, E) where
first(Path)=C1 and last(Path)=C2
and Path is valid in G(V, E)
and cost(Path) is minimized
The benefits of DSLs are immense: programs in DSLs are much shorter and quicker
to develop (gains of several fold), which improves understanding and maintainability
dramatically. On the other hand, there is a significant one-time cost
of inital development of the DSL.
At IntelliFactory we are experts at functional programming and DSL development.
Contact us to see how we can help your company benefit.