Papers
Topics
Authors
Recent
Assistant
AI Research Assistant
Well-researched responses based on relevant abstracts and paper content.
Custom Instructions Pro
Preferences or requirements that you'd like Emergent Mind to consider when generating responses.
Gemini 2.5 Flash
Gemini 2.5 Flash 148 tok/s
Gemini 2.5 Pro 44 tok/s Pro
GPT-5 Medium 23 tok/s Pro
GPT-5 High 30 tok/s Pro
GPT-4o 86 tok/s Pro
Kimi K2 197 tok/s Pro
GPT OSS 120B 458 tok/s Pro
Claude Sonnet 4.5 38 tok/s Pro
2000 character limit reached

A functional scripting interface to an object oriented C++ library (2312.13295v1)

Published 17 Dec 2023 in cs.PL

Abstract: The object oriented programming paradigm is widely used in science and engineering. Many open and commercial libraries are written in C++ and increasingly provide bindings to Python, which is much easier to learn, but still partly encourages the use of object oriented programming. However, scientific ideas are much more directly and meaningfully expressed in the purely functional programming paradigm. Here, we take a best practice example, CERNs Python binding for its ROOT library, designed to handle the enormous amounts of data generated by the worlds largest particle accelerator, and translate a simple segment of its tutorial into Clojure, a functional language from the Lisp family. The code examples demonstrate how a purely functional language straightforwardly expresses scientific ideas. Subsequently, we develop a compiled Lisp-C++ interoperation layer to access the ROOT library exclusively via functional code. To preserve the expressivity of the Lisp code, the type hints necessary for C++ code generation are stored in a separate file. The interop system presented here is a generic framework that, when provided with a suitable file of type hints, facilitates access to methods of arbitrary C++ libraries and platforms like real-time microcontrollers.

Definition Search Book Streamline Icon: https://streamlinehq.com
References (18)
  1. Root—an object oriented data analysis framework. Nuclear instruments and methods in physics research section A: accelerators, spectrometers, detectors and associated equipment, 389(1-2):81–86, 1997.
  2. Structure and interpretation of classical mechanics. The MIT Press, 2015.
  3. Functional differential geometry. The MIT Press, 2013.
  4. The role of programming in the formulation of ideas. AI Memo, Artificial Intelligence Laboratory, MIT, 18, 2002.
  5. Rich Hickey. The Clojure programming language. In Proceedings of the 2008 symposium on Dynamic languages, pages 1–1, 2008.
  6. Jeaye Wilkerson. The jank programming language. https://jank-lang.org. Accessed: 2023-12-09.
  7. CERN ROOT Manual. Passing Python callables to C++. https://root.cern/manual/python. Accessed: 2023-12-09.
  8. Clojure.org. State of Clojure 2023 results. https://clojure.org/news/2023/06/30/state-of-clojure-2023. Accessed: 2023-12-09.
  9. Efficient and accurate automatic Python bindings with cppyy & cling, 2023.
  10. Nurullah Akkaya. Ferret programmer’s manual. https://ferret-lang.org. Accessed: 2023-12-09.
  11. Markus Kloimwieder. LisRoot. https://github.com/kloimhardt/LisRoot. Accessed: 2023-12-09.
  12. Meta and community. React. https://react.dev/learn. Accessed: 2023-12-09.
  13. Cython: The best of both worlds. Computing in Science & Engineering, 13(2):31–39, 2010.
  14. Metosin. malli. https://github.com/metosin/malli. Accessed: 2023-12-09.
  15. The role of interpreters in high performance computing. Technical report, Fermi National Accelerator Lab.(FNAL), Batavia, IL (United States), 2008.
  16. D Liebgold. Functional mzScheme DSLs in game development. Commercial Users of Functional Programming, 2011. http://cufp.org/2011, Accessed: 2023-12-15.
  17. Potential of the Julia programming language for high energy physics computing. Computing and Software for Big Science, 7(1):10, 2023.
  18. Paul Graham. Revenge of the nerds. http://www.paulgraham.com/icad.html. Accessed: 2023-12-09.

Summary

We haven't generated a summary for this paper yet.

Lightbulb Streamline Icon: https://streamlinehq.com

Continue Learning

We haven't generated follow-up questions for this paper yet.

List To Do Tasks Checklist Streamline Icon: https://streamlinehq.com

Collections

Sign up for free to add this paper to one or more collections.

Don't miss out on important new AI/ML research

See which papers are being discussed right now on X, Reddit, and more:

“Emergent Mind helps me see which AI papers have caught fire online.”

Philip

Philip

Creator, AI Explained on YouTube