hint: Runtime Haskell interpreter

This page summarizes the projects mentioned and recommended in the original post on /r/haskell

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • hint

    Runtime Haskell interpreter

  • with haskell.nix, well, you've found the github issue, you need to put the apecs package in the right nix incantation.

  • binaryen

    Discontinued DEPRECATED in favor of ghc wasm backend, see https://www.tweag.io/blog/2022-11-22-wasm-backend-merged-in-ghc

  • Also, hint uses unsafeCoerce, and thus implicitly relies on an assumption about how values are represented at runtime. Namely, if a program P is interpreting an expression E of type A, hint assumes that the value of type A produced by the ghc interpreter has the same representation as the values of type A which are manipulated by program P. This is not guaranteed to be the case, since P has been compiled by the compiler portion of ghc while E has been evaluated by the interpreter portion of ghc. This means the ghc devs had to carefully craft their compiler and interpreters to match. When targetting the browser, a Haskell-to-js or Haskell-to-wasm compiler such as Asterius modifies ghc's code-generator so it produces js or wasm code. You would thus also need to tweak the interpreter so that it produces js or wasm values which match what the modified code-generator outputs. Or you could restrict yourself to the hint's less expressive eval :: String -> String API.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • deploy-hint

    Demonstrating that you don't need to install ghc in order to use the hint library.

  • The fact that a ghc installation is needed at runtime is indeed a weak point of the library, but I want to point out that hint is not calling the ghc executable at runtime, it is calling the ghc library, which in turn assumes the presence of a bunch of files on your machine. The easiest way to get those files on your machine is to install ghc, but it's not the only way! I have a proof of concept demonstrating how it is possible to bundle those files with your project so that your end users don't have to install ghc themselves. That proof of concept was recently extended to a real world use case in https://tidalcycles.org/; /u/yaxu, did that end up working? Is there anything you or I could do to make it easier for the next person to apply those ideas to their project?

  • Tidal

    Pattern language

  • The fact that a ghc installation is needed at runtime is indeed a weak point of the library, but I want to point out that hint is not calling the ghc executable at runtime, it is calling the ghc library, which in turn assumes the presence of a bunch of files on your machine. The easiest way to get those files on your machine is to install ghc, but it's not the only way! I have a proof of concept demonstrating how it is possible to bundle those files with your project so that your end users don't have to install ghc themselves. That proof of concept was recently extended to a real world use case in https://tidalcycles.org/; /u/yaxu, did that end up working? Is there anything you or I could do to make it easier for the next person to apply those ideas to their project?

  • apecs-hint-demo

    demonstrating how to use hint to dynamically modify the game world of an apecs-based game

  • Assuming you've succeeded this far, the real challenge is going to be to give the interpreted code access to your game's types. It is imperative to define those in a separate library from the package which calls hint. With stack and cabal, it then suffices to point hint to the package database in which that library is installed. I just created an example repo demonstrating how to use this inside a small apecs program: https://github.com/gelisam/apecs-hint-demo

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Show HN: WebAssembly Instrumentation in the Wizard Research Engine

    1 project | news.ycombinator.com | 14 Mar 2024
  • Push ifs up and fors down

    1 project | news.ycombinator.com | 15 Nov 2023
  • Keeping Up To Date With Toy, and Other Langs

    2 projects | /r/ProgrammingLanguages | 26 Feb 2023
  • the eye-opener commit

    1 project | /r/ProgrammerHumor | 18 Sep 2022
  • Building problems for using `Asterius` to compile Haskell to Webassembly.

    1 project | /r/haskell | 15 Sep 2022