Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
A prompt engineering functional programming language
| Date | Stars |
|---|---|
| 2026-07-31 | 607 |
| 2026-08-02 | 607 |
| 2026-08-06 | 607 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
# Grace [](https://garnix.io/repo/Gabriella439/grace) [](https://bsky.app/profile/trygrace.dev) Grace (short for [Fall-from-Grace](#name)) is a domain-specific programming language for prompting models. In particular, Grace is well-suited for building and auto-generating elaborate prompt chains You can use Grace in your browser without installing anything by visiting [trygrace.dev](https://trygrace.dev/). That website includes an interactive tutorial and is the recommended way to both learn and get started with using Grace. ## Features - Integrated language support for models You don't need to install any dependencies or import anything to get started. Everything you need is built directly into the language. The language provides a built-in `prompt` function for prompting a model: ```haskell >>> let key = ./openai.key : Key >>> prompt{ key, text: "Generate a list of names" } " Here are 40 varied first names (mixed genders and cultures): - Aiden - Sofia - Mateo … - Mabel - Imani - Zane Want names filtered by gender, culture, style (modern/vintage), or as full names/surnames?" ``` … and you can structure the output by giving a type annotation: ```haskell >>> prompt{ key, text: "Generate a list of names" } : List Text [ "Ava Thompson" , "Liam Patel" , "Sophia Martinez" … , "Jackson Rivera" , "Zoe Wilson" , "Aiden Park" ] ``` If the type is sufficiently self-explanatory, you can even omit the prompt: ```haskell >>> prompt{ key } : List { name: Text } [ { "name": "Alice" } , { "name": "Bob" } , { "name": "Charlie" } , { "name": "Diana" } , { "name": "Evan" } ] ``` In fact, you can omit the type, too, if the type can be inferred from use: ```haskell >>> for { name } of prompt{ key } in "Hello, ${name}!" [ "Hello, Alice!" , "Hello, Bob!" , "Hello, Carol!" , "Hello, Dave!" , "Hello, Eve!" ] ``` - JSON schemas inferred from use That last example works even without a prompt, schema, or type because Grace's type checker reasons backwards from how the output is used to infer the correct JSON schem, like this: - the type checker infers that the `name` variable must be `Text` … because the `name` variable is interpolated into `"Hello, ${name}!"` - the type checker infers that the `prompt` function must generate a `List` … because the program loops over the output using a `for … of` loop. - the type checker infers each element of the `List` has type `{ name: Text }` … because the `for … of` loop destructures each element using `{ name }` - therefore the `prompt` function outputs a value of type `List{ name: Text }` … which you can read as "a `List` of records, each of which has a `name` field containing `Text`". The interpreter then converts that Grace type into the following matching JSON schema to constrain the model's output: ```json { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" } }, "required": ["name"], "additionalProperties": false } } ``` Finally, the model infers from that JSON schema alone (without any additional prompt) that it should generate a JSON-encoded list of names. - Code generation You can prefix the `prompt` keyword with `import` to ask the model to generate a Grace expression of any type. For example: ```haskell >>> import prompt{ key, text: "increment" } \n -> n + 1 ``` You can use an explicit type annotation to guide the generated code: ```haskell >>> import prompt{ key, text: "increment" } : { input: Natural } -> { output: Natural } \{ input } -> { "output": input + 1 } ``` … and if the type is informa
Excerpt of 7,179 characters
Read on GitHub665
9
6
5
3
2
2
1
1
1
1
1
1
Would you bet a product on this? Bounded 0–100 and slow moving.
matched fp:5ee7f1455d51d9bd, topic:prompt-engineering, desc:prompt engineering
matched fp:5ee7f1455d51d9bd, topic:llm