I'm doing basic transformation of expressions like:

```
and [a, b, c]
```

to

```
if a then (if b then c else False) else False
```
And similar for or.
So I transform the haskell code. I need it for optimisation of Plutus execution which features different model of execution although it's valid haskell code.

@Richard thanks for the detailed answer!

I could achieve something for my own language embeded in QQ but it was because I had my own type-checker for that and kept  the locations.
In haskell source code I could not find that and now I know that it's intentional.


чт, 11 нояб. 2021 г. в 03:19, David Fox <dsf@seereason.com>:
I'd like to know more about what you are doing, I feel like I've set out to do something similar in the past and ended up going a different way.

On Sat, Nov 6, 2021 at 2:51 AM Anton Kholomiov <anton.kholomiov@gmail.com> wrote:
I have a task to convert one Haskell expression to another.
And I'd like to report errors properly.

[interpret|   -- error reported here
   valid haskell code
   invalid code           <- error
|]

I can parse it with haskell-src-exts or haskell-src-meta.
but if I have error in the code (type-check) error is positioned on the first line of the QQ-expression.

Do you know is it possible to report error at the line where it has happened or
to keep original source code location in the Exp.

In the function I do transformation Exp -> Exp.

Or maybe there is a better way to do it instead of QQ?
_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.