ghc has a FFI for C and C++ can be made to generate C compatible code.
There is no way to use a C++ library in another runtime without writing a
big chunk of glue code.
Immanuel

On Mon, Mar 17, 2025 at 6:31 PM Hans Åberg <haber...@icloud.com> wrote:

>
> > On 17 Mar 2025, at 11:01, Aura Kelloniemi <kaura....@sange.fi> wrote:
> >
> > I am developing a tool for processing musical notation in Haskell. I
> want to
> > be able to import LilyPond scores and as I don't want to parse LilyPond's
> > surface syntax and write a Scheme interpreter, I have decided to export
> > LilyPond scores as S-expressions (which are easy to generate in Guile).
> >
> > The process works such that my import routine invokes LilyPond with a
> custom
> > init file, which runs the S-expression export routine.
> >
> > The command that my importer uses is:
> > $ lilypond --init /absolute/path/to/init-file.ly relative/path/to/
> score-file.ly
> >
> > The exporter writes output to stdout.
> >
> > I have a few questions/problems:
> >
> > 1) First of all, is this a good strategy at all or would there be a
> better way
> > to make LilyPond run a custom export code and prevent it from generating
> any
> > output files itself? I would like my solution to be forwards-compatible
> from
> > LilyPond 2.24 onwards to some extent at least..
>
> In my experience, it is hard to work with source code directly, because of
> the difficulty to pin down dependencies.
>
> GHC has a FFI interface for C++, and Guile has a C interface, so it might
> work to call it directly from the Haskell code. What is missing is a direct
> LilyPond C++ interface.
> https://wiki.haskell.org/GHC/Using_the_FFI
>
>
>
>

-- 
-- A man must either resolve to point out nothing new or to become a slave
to defend it. -- Sir Isaac Newton

Reply via email to