CakeML/cakeml

astPP doesn't print algebraic datatype correctly

Ouverte

#480 ouverte le 6 avr. 2018

 (7 commentaires) (0 réaction) (0 personne assignée)Standard ML (98 forks)auto 404
dev experiencehelp wantedlow reward

Métriques du dépôt

Stars
 (1 169 étoiles)
Métriques de merge PR
 (Métriques PR en attente)

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.

Guide contributeur