CakeML/cakeml

astPP doesn't print algebraic datatype correctly

オープン

#480 opened on 2018/04/06

 (7 件のコメント) (0 件のリアクション) (0 人の担当者)Standard ML (98 件のフォーク)auto 404
dev experiencehelp wantedlow reward

Repository metrics

Stars
 (1,169 個のスター)
PR merge metrics
 (PR metrics pending)

説明

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.

コントリビューターガイド