next | previous | forward | backward | up | top | index | toc | Macaulay2 web site
Serialization :: serialize

serialize -- reversible conversion of all Macaulay2 objects to strings

Synopsis

Description

A convenient thing to serialize is the list of all user symbols provided by userSymbols, as in the following example.
i1 : R = QQ[x,y]

o1 = R

o1 : PolynomialRing
i2 : I = ideal (x^2+y^3-1)

            3    2
o2 = ideal(y  + x  - 1)

o2 : Ideal of R
i3 : S = R/I

o3 = S

o3 : QuotientRing
i4 : X = new Type of List

o4 = X

o4 : Type
i5 : g = new MutableList

o5 = MutableList{}

o5 : MutableList
i6 : h = new MutableList

o6 = MutableList{}

o6 : MutableList
i7 : g#0 = h

o7 = MutableList{}

o7 : MutableList
i8 : h#0 = g

o8 = MutableList{...1...}

o8 : MutableList
i9 : save := serialize userSymbols()

o9 = -- -*- mode: M2; coding: utf-8 -*-
     s0:=QQ -- Ring : QQ
     s1:=monoid[x..y, Degrees => {2:1}, Heft => {1}, MonomialOrder => VerticalList{MonomialSize => 32, GRevLex => {2:1}, Position => Up}, DegreeRank => 1] -- GeneralOrderedMonoid : monoid[x..y, Degrees => {2:1}, Heft => {1}, MonomialOrder => VerticalList{MonomialSize => 32, GRevLex => {2:1}, Position => Up}, DegreeRank => 1]
     s2:=s0 s1 -- PolynomialRing : R
     s3:=global R -- Symbol : R
     s4:=s2_{0, 3} -- R : y^3
     s5:=s2_{2, 0} -- R : x^2
     s6:=-1/1 -- QQ : -1
     s7:=1_s2 -- R : 1
     s8:=s4+s5+s6*s7 -- R : y^3+x^2-1
     s9:=ideal(s8) -- Ideal : ideal(y^3+x^2-1)
     s10:=s2/s9 -- QuotientRing : S
     s11:=global S -- Symbol : S
     s12:=s10_{1, 0} -- S : x
     s13:=global x -- Symbol : x
     s14:=s10_{0, 1} -- S : y
     s15:=global y -- Symbol : y
     s16:=global I -- Symbol : I
     s17:=Type -- Type : Type
     s18:=List -- Type : List
     s19:=newClass(s17,s18,hashTable{}) -- Type : X
     s20:=global X -- Symbol : X
     s21:=MutableList -- Type : MutableList
     s22:=newClass(s21,{}) -- MutableList : MutableList{...1...}
     s23:=newClass(s21,{}) -- MutableList : MutableList{...1...}
     s24:=global g -- Symbol : g
     s25:=global h -- Symbol : h
     s26:={s3,s13,s15,s16,s11,s20,s24,s25} -- List : {R, x, y, I, S, X, g, h}
     s3<-s2
     s11<-s10
     s13<-s12
     s15<-s14
     s16<-s9
     globalAssignFunction(s20,s19)
     s20<-s19
     s22#0=s23
     s23#0=s22
     s24<-s23
     s25<-s22
     s26
i10 : clearAll
i11 : I

o11 = I

o11 : Symbol
i12 : value save

o12 = {R, x, y, I, S, X, g, h}

o12 : List
i13 : I

             3    2
o13 = ideal(y  + x  - 1)

o13 : Ideal of QQ[x, y]
i14 : g

o14 = MutableList{...1...}

o14 : MutableList
i15 : g#0 === h

o15 = true