CakeML/cakeml

astPP doesn't print algebraic datatype correctly

Aberta

#480 aberto em 6 de abr. de 2018

 (7 comentários) (0 reação) (0 responsável)Standard ML (98 forks)auto 404
dev experiencehelp wantedlow reward

Métricas do repositório

Stars
 (1.169 estrelas)
Métricas de merge de PR
 (Métricas PR pendentes)

Description

Hi,

With the following datatype:

datatype 'a misc_app_list =
   Nil
|  Append of  'a misc_app_list *  'a misc_app_list
|  List of  'a list;

Here's an example of what is produced:

(Append(Append(v2,List([", "])),v5 v1))

I.e:

(Append
  (Append
    (v2,
     List([", "])
    ),
    v5 v1
  )
)

When it should be:

(Append
  (Append
    (v2)
    ( List([", "]) )
  )
  ( v5 v1 )
)

Shortly, Append x y is printed as Append (x, y) instead of Append (x) (y). My guess is that it's printed by the same function than the one used to print lists or things like:

case  v3 of 
   (v2,v1) => (* <- this *)

To fix this, it should not print a , but ) ( between things.

It's working for the constructor List, but I think it's because it takes only one argument, so the bug doesn't show.

Guia do colaborador