0
votes

SML consistant une liste de données de données

Si j'ai ce type de données SML xxx pré>

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)))


0 commentaires

3 Réponses :


1
votes

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.

Vous devez accusé sur la liste "INTÉRIEUR" THE Array CODE>: P>

fun json_cons o (Array os) = Array (o :: os)
  | json_cons _ _ = ... handle structural error ...


4 commentaires

Merci, cela m'a revenu. Cependant, le fait que ([objet [((((((A ", num 2.0)]]]) est une liste json comme [2] est 'Une liste est plutôt bizarre à la recherche et j'aurais été dans de nombreux cycles "Test-test".


[2] est une liste int , pas un 'une liste (Vous ne pouvez pas créer un ' une liste , comme ils ne peuvent pas exister); 2 est un int et ajout du [] autour de celui-ci fait une liste int . Si une expression E a le type json , [e] a la liste de type json .


Bien, mais pourquoi les parenthèses sont-elles nécessaires autour de [objet [((("A", NUM 2.0)]]] pour la liste de liste? Si [2] est une liste int , pourquoi n'est-il pas seulement [objet [(((("A", num 2.0)]] a < Code> Liste JSON prêt pour le consentre? Au lieu de cela, j'ai besoin de ([objet [((("A", NUM 2.0)]]) Pour consacrer.


Ok, tu m'as eu là ... Les parenthèses ne sont pas nécessaires, en raison de la faible priorité de :: . Je les ai mis là-bas pour plus de clarté, mais Array (objet [(("A", NUM 1.0)] :: [Objet [(("A", NUM 2.0)]]] fonctionne également.



0
votes

Avec l'aide de Molbdnilo, j'ai passé le bloc mental de la manière de créer une liste . Étant donné que tableau 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 le Array constructeur xxx

test xxx

Voici un autre exemple à la construction directe xxx < / pré>

pour une personne habituée à 1 :: [2] C'est bizarre, en particulier le ([[...] [...]]) comme partie du CDR . Voici donc le code xxx

test xxx

... Types ...


0 commentaires

0
votes

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


0 commentaires