1999 · 31 citations · 16 references
Event CameraEngineeringVisual Programming LanguageCompiler TechnologyComputer ArchitectureSoftware EngineeringPronounced FissionParallel ComputingVision SensorHybrid SystemReal-time Vision SystemsHigh-level Programming LanguageMachine VisionComputer EngineeringComputer ScienceFunctional ProgrammingSoftware DesignComputer VisionProgram AnalysisEye TrackingExtended RealityReal-time TechniqueIntermediate RepresentationParametric Polymorphism
Describes the enhancement of XVision, a large library of C++ code for real-time vision processing, into FVision (pronounced fission), a fully-featured domain-specific language (DSL) embedded in Haskell. The resulting prototype system substantiates the claims of increased modularity, effective code reuse and rapid prototyping that characterize the DSL approach to systems design. It also illustrates the need for judicious interface design: relegating computationally expensive tasks to XVision (pre-existing C++ components) and leaving modular compositional tasks to FVision (Haskell). At the same time, our experience demonstrates how Haskell's advanced language features (specifically, parametric polymorphism, lazy evaluation, higher-order functions and automatic storage reclamation) permit a rapid DSL design that is itself highly modular and easily modified. Overall, the resulting hybrid system exceeded our expectations: visual tracking programs continue to spend most of their time executing low-level image processing code, while Haskell's advanced features allow us to quickly develop and test small prototype systems within a matter of a few days, and to develop realistic applications within a few weeks.
16
Why Functional Programming Matters
John Hughes · The Computer Journal · 1989 · 733 citations · Full text
Functional Programming Matters, Engineering, Software Engineering +16
Conal Elliott, Paul Hudak · 1997 · 613 citations
Modular domain specific languages and tools
Paul Hudak · 2002 · 334 citations
Engineering, Particular Application Domain, Computer Architecture +19