ABSTRACT
C-Rules is a business rules management system developed by Constraint Technologies International1 (CTI), designed for use in transportation problems. Users define rules describing various aspects of a problem, such as solution costs and legality, which are then queried from a host application, typically an optimising solver. At its core, C-Rules provides a functional expression language which affords users both power and flexibility when formulating rules. In this paper we will describe our experiences of using functional programming both at the end-user level, as well as at the implementation level. We highlight some of the benefits we, and the product's users, have enjoyed from the decision to base our rule system on features such as: higher-order functions, referential transparency, and static, polymorphic typing. We also outline some of our experiences in using Haskell to build an efficient compiler for the core language.
- L. Augustsson. Partial evaluation in aircraft crew planning. In Partial Evaluation and Semantics-Based Program Manipulation, Amsterdam, The Netherlands, June 1997, pages 127--136. New York ACM, 1997. URL citeseer.ist.psu.edu/augustsson97partial.html Google ScholarDigital Library
- CAM. CAM# Rostering Optimizer http://www.constrainttechnologies.com/components/CAM_sharp_Rostering_Optimiser.html.Google Scholar
- GHC. Glasgow Haskell Compiler http://www.haskell.org/ghc/Google Scholar
- John Hughes. The Design of a Pretty-printing Library In J. Jeuring and E. Meijer, editors, Advanced Functional Programming, pages 53--96. Springer Verlag, LNCS 925, 1995. Google ScholarDigital Library
- Martin Sulzmann, Martin Odersky, and Martin Wehr. Type inference with constrained types. In Fourth International Workshop on Foundations of Object-Oriented Programming (FOOL 4), 1997. URL citeseer.ist.psu.edu/article/odersky99type.htmlGoogle Scholar
- Jeremy Wazny. Type inference and type error diagnosis for Hindley Milner with extensions. PhD thesis, University of Melbourne, 2006.Google Scholar
- XBO Pairing Optimizer. http://www.constrainttechnologies.com/components/XBO_Pairing_Optimiser.html.Google Scholar
Index Terms
- Experience report: functional programming in c-rules
Recommendations
Modular language implementation in Rascal - experience report
All software evolves, and programming languages and programming language tools are no exception. And just like in ordinary software construction, modular implementations can help ease the process of changing a language implementation and its dependent ...
Experience report: using hackage to inform language design
HASKELL '10Hackage, an online repository of Haskell applications and libraries, provides a hub for programmers to both release code to and use code from the larger Haskell community. We suggest that Hackage can also serve as a valuable resource for language ...
Experience report: using hackage to inform language design
Haskell '10: Proceedings of the third ACM Haskell symposium on HaskellHackage, an online repository of Haskell applications and libraries, provides a hub for programmers to both release code to and use code from the larger Haskell community. We suggest that Hackage can also serve as a valuable resource for language ...
Comments