Si j'ai ce type de données SML disons que j'ai ce tableau avec un seul objet avec un objet code> ce qui en fait un JSON CODE> LISTE P> val four = Succ (Succ (Succ (Succ Zero)))
3 Réponses :
Vous devez accusé sur la liste "INTÉRIEUR" THE tableau [...] code> n'est pas une liste JSON code>, c'est un json code> et :: code> :: code> ne peut pas être deux json code> s dans une liste. Array CODE>: P> fun json_cons o (Array os) = Array (o :: os)
| json_cons _ _ = ... handle structural error ...
Merci, cela m'a revenu. Cependant, le fait que ([objet [((((((A ", num 2.0)]]]) code> est une liste json code> comme [2] code> est 'Une liste CODE> est plutôt bizarre à la recherche et j'aurais été dans de nombreux cycles "Test-test".
[2] code> est une liste int code>, pas un 'une liste code> (Vous ne pouvez pas créer un ' une liste code >, comme ils ne peuvent pas exister); 2 code> est un int code> et ajout du [] code> autour de celui-ci fait une liste int code>. Si une expression E code> a le type json code>, [e] code> a la liste de type json code>.
Bien, mais pourquoi les parenthèses sont-elles nécessaires autour de [objet [((("A", NUM 2.0)]]] code> pour la liste de liste? Si [2] code> est une liste int code>, pourquoi n'est-il pas seulement [objet [(((("A", num 2.0)]] code> a < Code> Liste JSON CODE> prêt pour le consentre? Au lieu de cela, j'ai besoin de ([objet [((("A", NUM 2.0)]]) CODE> Pour consacrer.
Ok, tu m'as eu là ... Les parenthèses ne sont pas nécessaires, en raison de la faible priorité de :: code>. Je les ai mis là-bas pour plus de clarté, mais Array (objet [(("A", NUM 1.0)] :: [Objet [(("A", NUM 2.0)]]] CODE> fonctionne également.
Avec l'aide de Molbdnilo, j'ai passé le bloc mental de la manière de créer une liste code> code>. Étant donné que test p> Voici un autre exemple à la construction directe p> pour une personne habituée à test p> ... Types ... p> p > tableau code> est également un constructeur, c'est-à-dire comme une fonction, nous pouvons faire des choses à l'intérieur de cet appel de fonction constructeur, nommément, nous pouvons faire une liste normale intérieure em> le Array code> constructeur 1 :: [2] code> C'est bizarre, en particulier le ([[...] [...]]) code> comme partie du CDR . Voici donc le code p>
Merci pour l'aide de Molbdnilo sur la création de la fonction "Inconvénients pour JSON" ". Fixation d'une version de récursion de la queue de la solution:
fun make_silly_json i =
let fun aux(i, acc) =
if i = 0
then acc
else let val json_val = Object[("n", Num(int_to_real(i))),("b", True)]
fun json_con (obj, (Array os)) =
Array(obj::os)
| json_con (_,_) = (Array [])
in
aux(i-1, json_con(json_val, acc))
end
in aux(i, Array[])
end