~<#71042#>This section introduces more convenient ways to express lists than <#63166#><#15117#>cons<#15117#><#63166#>. In our experience, students have problems if these methods are taught before they understand <#63167#><#15118#>cons<#15118#><#63167#> completely. Once they do, the methods introduced here save a lot of work and start making Scheme practical. At the end, it is critical that students understand the difference between <#63168#><#15119#>(list<#15119#>\ <#15120#>1)<#15120#><#63168#> and <#63169#><#15121#>(list<#15121#>\ <#15122#>1<#15122#>\ <#15123#>empty)<#15123#><#63169#>, which are distinct lists. The first contains a single item, <#63170#><#15124#>1<#15124#><#63170#>; the second contains two items: <#63171#><#15125#>1<#15125#><#63171#> and <#63172#><#15126#>empty<#15126#><#63172#>.<#71042#>
Using <#63173#><#15127#>cons<#15127#><#63173#> to create lists is rather inconvenient if a list
contains many items. To make our life easier, Scheme provides the
<#63174#><#15128#>list<#15128#><#63174#> operation, which consumes an arbitrary number of values and
creates a list. In other words, we extend Scheme's syntactic specification
with a new primitive:
<#72205#>#tex2html_wrap_inline73056#<#72205#> <#15134#>=<#15134#> <#15135#>list<#15135#>
and extend the collection of values with a new clause:
<#72206#>#tex2html_wrap_inline73058#<#72206#> <#15144#>=<#15144#> <#15145#>(list<#15145#> <#72207#>#tex2html_wrap_inline73060#<#72207#> <#15147#>...<#15147#> <#72208#>#tex2html_wrap_inline73062#<#72208#><#15149#>)<#15149#>
The notation <#71047#><#63179#>;SPMlt;<#15153#>val<#15153#>;SPMgt;<#63179#><#71047#> ...<#71048#><#63180#>;SPMlt;<#15154#>val<#15154#>;SPMgt;<#63180#><#71048#> stands for an arbitrarily
long sequence of values.
A simpler way to understand <#63181#><#15155#>list<#15155#><#63181#> expressions is to think
of them as abbreviations. Specifically, every expression of the
shape
<#15160#>(list<#15160#> <#15161#>exp-1<#15161#> <#15162#>...<#15162#> <#15163#>exp-n)<#15163#>
stands for a series of <#15167#>n<#15167#> <#63182#><#15168#>cons<#15168#><#63182#> expressions:
<#15173#>(cons<#15173#> <#15174#>exp-1<#15174#> <#15175#>(cons<#15175#> <#15176#>...<#15176#> <#15177#>(cons<#15177#> <#15178#>exp-n<#15178#> <#15179#>empty)))<#15179#>
Recall that <#63183#><#15183#>empty<#15183#><#63183#> is not an item of the list here, but the
rest of the list after <#15184#>n<#15184#> <#63184#><#15185#>cons<#15185#><#63184#>es. Here are three
examples;
<#15190#>(list<#15190#> <#15191#>1<#15191#> <#15192#>2)<#15192#>
<#15193#>=<#15193#> <#15194#>(cons<#15194#> <#15195#>1<#15195#> <#15196#>(cons<#15196#> <#15197#>2<#15197#> <#15198#>empty))<#15198#>
<#15199#>(list<#15199#> <#15200#>'<#15200#><#15201#>Houston<#15201#> <#15202#>'<#15202#><#15203#>Dallas<#15203#> <#15204#>'<#15204#><#15205#>SanAntonio)<#15205#>
<#15206#>=<#15206#> <#15207#>(cons<#15207#> <#15208#>'<#15208#><#15209#>Houston<#15209#> <#15210#>(cons<#15210#> <#15211#>'<#15211#><#15212#>Dallas<#15212#> <#15213#>(cons<#15213#> <#15214#>'<#15214#><#15215#>SanAntonio<#15215#> <#15216#>empty)))<#15216#>
<#15217#>(list<#15217#> <#15218#>false<#15218#> <#15219#>true<#15219#> <#15220#>false<#15220#> <#15221#>false<#15221#><#15222#>)<#15222#>
<#15223#>=<#15223#> <#15224#>(cons<#15224#> <#15225#>false<#15225#> <#15226#>(cons<#15226#> <#15227#>true<#15227#> <#15228#>(cons<#15228#> <#15229#>false<#15229#> <#15230#>(cons<#15230#> <#15231#>false<#15231#> <#15232#>empty))))<#15232#>
They introduce lists with two, three, and four items,
respectively.
Of course, we can apply <#63185#><#15236#>list<#15236#><#63185#> not only to values but also
to expressions, but before the list is constructed, the expressions
must be evaluated:
<#15241#>(list<#15241#> <#15242#>(+<#15242#> <#15243#>0<#15243#> <#15244#>1)<#15244#> <#15245#>(+<#15245#> <#15246#>1<#15246#> <#15247#>1))<#15247#>
<#15248#>=<#15248#> <#15249#>(list<#15249#> <#15250#>1<#15250#> <#15251#>2)<#15251#>
<#15252#>=<#15252#> <#15253#>(cons<#15253#> <#15254#>1<#15254#> <#15255#>(cons<#15255#> <#15256#>2<#15256#> <#15257#>empty))<#15257#>
If during the evaluation of an expression an error occurs, the list
is never formed:
<#15265#>(list<#15265#> <#15266#>(/<#15266#> <#15267#>1<#15267#> <#15268#>0)<#15268#> <#15269#>(+<#15269#> <#15270#>1<#15270#> <#15271#>1))<#15271#>
<#15272#>=<#15272#> <#15273#>/:<#15273#> <#15274#>divide<#15274#> <#15275#>by<#15275#> <#15276#>zero<#15276#>
In short, <#63186#><#15280#>list<#15280#><#63186#> behaves just like any other primitive operation.
The use of <#63187#><#15281#>list<#15281#><#63187#> greatly simplifies the notation for lists
with many items and lists that contains lists or structures. Here
is an example:
<#15286#>(list<#15286#> <#15287#>0<#15287#> <#15288#>1<#15288#> <#15289#>2<#15289#> <#15290#>3<#15290#> <#15291#>4<#15291#> <#15292#>5<#15292#> <#15293#>6<#15293#> <#15294#>7<#15294#> <#15295#>8<#15295#> <#15296#>9)<#15296#>
This list contains 10 items and its formation with <#63188#><#15300#>cons<#15300#><#63188#>
and <#63189#><#15301#>empty<#15301#><#63189#> would require 10 uses of <#63190#><#15302#>cons<#15302#><#63190#> and one
instance of <#63191#><#15303#>empty<#15303#><#63191#>. Similarly, the list
<#15308#>(list<#15308#> <#15309#>(list<#15309#> <#15310#>'<#15310#><#15311#>bob<#15311#> <#15312#>0<#15312#> <#15313#>'<#15313#><#15314#>a)<#15314#>
<#15315#>(list<#15315#> <#15316#>'<#15316#><#15317#>carl<#15317#> <#15318#>1<#15318#> <#15319#>'<#15319#><#15320#>a)<#15320#>
<#15321#>(list<#15321#> <#15322#>'<#15322#><#15323#>dana<#15323#> <#15324#>2<#15324#> <#15325#>'<#15325#><#15326#>b)<#15326#>
<#15327#>(list<#15327#> <#15328#>'<#15328#><#15329#>erik<#15329#> <#15330#>3<#15330#> <#15331#>'<#15331#><#15332#>c)<#15332#>
<#15333#>(list<#15333#> <#15334#>'<#15334#><#15335#>frank<#15335#> <#15336#>4<#15336#> <#15337#>'<#15337#><#15338#>a)<#15338#>
<#15339#>(list<#15339#> <#15340#>'<#15340#><#15341#>grant<#15341#> <#15342#>5<#15342#> <#15343#>'<#15343#><#15344#>b)<#15344#>
<#15345#>(list<#15345#> <#15346#>'<#15346#><#15347#>hank<#15347#> <#15348#>6<#15348#> <#15349#>'<#15349#><#15350#>c)<#15350#>
<#15351#>(list<#15351#> <#15352#>'<#15352#><#15353#>ian<#15353#> <#15354#>8<#15354#> <#15355#>'<#15355#><#15356#>a)<#15356#>
<#15357#>(list<#15357#> <#15358#>'<#15358#><#15359#>john<#15359#> <#15360#>7<#15360#> <#15361#>'<#15361#><#15362#>d)<#15362#>
<#15363#>(list<#15363#> <#15364#>'<#15364#><#15365#>karel<#15365#> <#15366#>9<#15366#> <#15367#>'<#15367#><#15368#>e))<#15368#>
requires 11 uses of <#63192#><#15372#>list<#15372#><#63192#> in contrast to 40 of <#63193#><#15373#>cons<#15373#><#63193#> and 11
of <#63194#><#15374#>empty<#15374#><#63194#>.
<#15377#>Exercise 13.0.1<#15377#>
Use <#63195#><#15379#>cons<#15379#><#63195#> and <#63196#><#15380#>empty<#15380#><#63196#> to construct the equivalent of the
following lists:
- <#63197#><#15382#>(list<#15382#>\ <#15383#>0<#15383#>\ <#15384#>1<#15384#>\ <#15385#>2<#15385#>\ <#15386#>3<#15386#>\ <#15387#>4<#15387#>\ <#15388#>5)<#15388#><#63197#>
- <#63198#><#15389#>(list<#15389#>\ <#15390#>(list<#15390#>\ <#15391#>'<#15391#><#15392#>adam<#15392#>\ <#15393#>0)<#15393#>\ <#15394#>(list<#15394#>\ <#15395#>'<#15395#><#15396#>eve<#15396#>\ <#15397#>1)<#15397#>\ <#15398#>(list<#15398#>\ <#15399#>'<#15399#><#15400#>louisXIV<#15400#>\ <#15401#>2))<#15401#><#63198#>
- <#63199#><#15402#>(list<#15402#>\ <#15403#>1<#15403#>\ <#15404#>(list<#15404#>\ <#15405#>1<#15405#>\ <#15406#>2)<#15406#>\ <#15407#>(list<#15407#>\ <#15408#>1<#15408#>\ <#15409#>2<#15409#>\ <#15410#>3))<#15410#><#63199#>.
Solution<#63200#><#63200#>
<#15417#>Exercise 13.0.2<#15417#>
Use <#63201#><#15419#>list<#15419#><#63201#> to construct the equivalent of the following lists:
- <#63202#><#15421#>(cons<#15421#>\ <#15422#>'<#15422#><#15423#>a<#15423#>\ <#15424#>(cons<#15424#>\ <#15425#>'<#15425#><#15426#>b<#15426#>\ <#15427#>(cons<#15427#>\ <#15428#>'<#15428#><#15429#>c<#15429#>\ <#15430#>(cons<#15430#>\ <#15431#>'<#15431#><#15432#>d<#15432#>\ <#15433#>(cons<#15433#>\ <#15434#>'<#15434#><#15435#>e<#15435#>\ <#15436#>empty)))))<#15436#><#63202#>
- <#63203#><#15437#>(cons<#15437#>\ <#15438#>(cons<#15438#>\ <#15439#>1<#15439#>\ <#15440#>(cons<#15440#>\ <#15441#>2<#15441#>\ <#15442#>empty))<#15442#>\ <#15443#>empty)<#15443#><#63203#>
- <#63204#><#15444#>(cons<#15444#>\ <#15445#>'<#15445#><#15446#>a<#15446#>\ <#15447#>(cons<#15447#>\ <#15448#>(cons<#15448#>\ <#15449#>1<#15449#>\ <#15450#>empty)<#15450#>\ <#15451#>(cons<#15451#>\ <#15452#>false<#15452#>\ <#15453#>empty)))<#15453#><#63204#>.
- <#63205#><#15454#>(cons<#15454#>\ <#15455#>(cons<#15455#>\ <#15456#>1<#15456#>\ <#15457#>(cons<#15457#>\ <#15458#>2<#15458#>\ <#15459#>empty))<#15459#>\ <#15460#>(cons<#15460#>\ <#15461#>(cons<#15461#>\ <#15462#>2<#15462#>\ <#15463#>(cons<#15463#>\ <#15464#>3<#15464#>\ <#15465#>empty))<#15465#>\ <#15466#>empty))<#15466#><#63205#>
Start by determining how many items each list and each nested list
contains. Solution<#63206#><#63206#>
<#15473#>Exercise 13.0.3<#15473#>
On rare occasions, it is necessary we may encounter lists formed with
<#63207#><#15475#>cons<#15475#><#63207#> and <#63208#><#15476#>list<#15476#><#63208#>. Reformulate the following lists using
<#63209#><#15477#>cons<#15477#><#63209#> and <#63210#><#15478#>empty<#15478#><#63210#> exclusively:
- <#63211#><#15480#>(cons<#15480#>\ <#15481#>'<#15481#><#15482#>a<#15482#>\ <#15483#>(list<#15483#>\ <#15484#>0<#15484#>\ <#15485#>false<#15485#><#15486#>))<#15486#><#63211#>
- <#63212#><#15487#>(list<#15487#>\ <#15488#>(cons<#15488#>\ <#15489#>1<#15489#>\ <#15490#>(cons<#15490#>\ <#15491#>13<#15491#>\ <#15492#>empty)))<#15492#><#63212#>
- <#63213#><#15493#>(list<#15493#>\ <#15494#>empty<#15494#>\ <#15495#>empty<#15495#>\ <#15496#>(cons<#15496#>\ <#15497#>1<#15497#>\ <#15498#>empty))<#15498#><#63213#>
- <#63214#><#15499#>(cons<#15499#>\ <#15500#>'<#15500#><#15501#>a<#15501#>\ <#15502#>(cons<#15502#>\ <#15503#>(list<#15503#>\ <#15504#>1)<#15504#>\ <#15505#>(list<#15505#>\ <#15506#>false<#15506#>\ <#15507#>empty)))<#15507#><#63214#>.
Now formulate the lists using <#63215#><#15509#>list<#15509#><#63215#>. Solution<#63216#><#63216#>
<#15515#>Exercise 13.0.4<#15515#>
Determine the values of the following expressions:
- <#63217#><#15518#>(list<#15518#>\ <#15519#>(symbol=?<#15519#>\ <#15520#>'<#15520#><#15521#>a<#15521#>\ <#15522#>'<#15522#><#15523#>b)<#15523#>\ <#15524#>(symbol=?<#15524#>\ <#15525#>'<#15525#><#15526#>c<#15526#>\ <#15527#>'<#15527#><#15528#>c)<#15528#>\ <#15529#>false<#15529#><#15530#>)<#15530#><#63217#>
- <#63218#><#15531#>(list<#15531#>\ <#15532#>(+<#15532#>\ <#15533#>10<#15533#>\ <#15534#>20)<#15534#>\ <#15535#>(*<#15535#>\ <#15536#>10<#15536#>\ <#15537#>20)<#15537#>\ <#15538#>(/<#15538#>\ <#15539#>10<#15539#>\ <#15540#>20))<#15540#><#63218#>
- <#63219#><#15541#>(list<#15541#>\ <#15542#>'<#15542#><#15543#>dana<#15543#>\ <#15544#>'<#15544#><#15545#>jane<#15545#>\ <#15546#>'<#15546#><#15547#>mary<#15547#>\ <#15548#>'<#15548#><#15549#>laura)<#15549#><#63219#>
Solution<#63220#><#63220#>
<#15556#>Exercise 13.0.5<#15556#>
Determine the values of
<#15562#>(first<#15562#> <#15563#>(list<#15563#> <#15564#>1<#15564#> <#15565#>2<#15565#> <#15566#>3))<#15566#>
<#15567#>(rest<#15567#> <#15568#>(list<#15568#> <#15569#>1<#15569#> <#15570#>2<#15570#> <#15571#>3))<#15571#>
Solution<#63221#><#63221#>
The use of <#63222#><#15582#>list<#15582#><#63222#> makes it significantly easier to evaluate
expressions involving lists. Here are the recursive steps from an example
from section~#seclistsmore#15583>:
<#15588#>(sum<#15588#> <#15589#>(list<#15589#> <#15590#>(make-ir<#15590#> <#15591#>'<#15591#><#15592#>robot<#15592#> <#15593#>22.05)<#15593#> <#15594#>(make-ir<#15594#> <#15595#>'<#15595#><#15596#>doll<#15596#> <#15597#>17.95)))<#15597#>
<#15598#>=<#15598#> <#15599#>(+<#15599#> <#15600#>(ir-price<#15600#> <#15601#>(first<#15601#> <#15602#>(list<#15602#> <#15603#>(make-ir<#15603#> <#15604#>'<#15604#><#15605#>robot<#15605#> <#15606#>22.05)<#15606#> <#15607#>(make-ir<#15607#> <#15608#>'<#15608#><#15609#>doll<#15609#> <#15610#>17.95))))<#15610#>
<#15611#>(sum<#15611#> <#15612#>(rest<#15612#> <#15613#>(list<#15613#> <#15614#>(make-ir<#15614#> <#15615#>'<#15615#><#15616#>robot<#15616#> <#15617#>22.05)<#15617#> <#15618#>(make-ir<#15618#> <#15619#>'<#15619#><#15620#>doll<#15620#> <#15621#>17.95)))))<#15621#>
<#15622#>=<#15622#> <#15623#>(+<#15623#> <#15624#>(ir-price<#15624#> <#15625#>(make-ir<#15625#> <#15626#>'<#15626#><#15627#>robot<#15627#> <#15628#>22.05))<#15628#>
<#15629#>(sum<#15629#> <#15630#>(list<#15630#> <#15631#>(make-ir<#15631#> <#15632#>'<#15632#><#15633#>doll<#15633#> <#15634#>17.95))))<#15634#>
<#15635#>;At this place, we use one of the equations governing <#15635#>
<#15636#>;the new primitive operations for the first time: <#15636#>
<#15637#>=<#15637#> <#15638#>(+<#15638#> <#15639#>22.05<#15639#>
<#15640#>(sum<#15640#> <#15641#>(list<#15641#> <#15642#>(make-ir<#15642#> <#15643#>'<#15643#><#15644#>doll<#15644#> <#15645#>17.95))))<#15645#>
<#15646#>=<#15646#> <#15647#>(+<#15647#> <#15648#>22.05<#15648#>
<#15649#>(+<#15649#> <#15650#>(ir-price<#15650#> <#15651#>(first<#15651#> <#15652#>(list<#15652#> <#15653#>(make-ir<#15653#> <#15654#>'<#15654#><#15655#>doll<#15655#> <#15656#>17.95))))<#15656#>
<#15657#>(sum<#15657#> <#15658#>(rest<#15658#> <#15659#>(list<#15659#> <#15660#>(make-ir<#15660#> <#15661#>'<#15661#><#15662#>doll<#15662#> <#15663#>17.95))))))<#15663#>
<#15664#>=<#15664#> <#15665#>(+<#15665#> <#15666#>22.05<#15666#>
<#15667#>(+<#15667#> <#15668#>(ir-price<#15668#> <#15669#>(make-ir<#15669#> <#15670#>'<#15670#><#15671#>doll<#15671#> <#15672#>17.95))<#15672#>
<#15673#>(sum<#15673#> <#15674#>empty)))<#15674#>
<#15675#>=<#15675#> <#15676#>(+<#15676#> <#15677#>22.05<#15677#> <#15678#>(+<#15678#> <#15679#>17.95<#15679#> <#15680#>(sum<#15680#> <#15681#>empty)))<#15681#>
<#15682#>=<#15682#> <#15683#>(+<#15683#> <#15684#>22.05<#15684#> <#15685#>(+<#15685#> <#15686#>17.95<#15686#> <#15687#>0))<#15687#>
Since the laws of <#63223#><#15691#>first<#15691#><#63223#> and <#63224#><#15692#>rest<#15692#><#63224#> carry over to
<#63225#><#15693#>list<#15693#><#63225#> values in a natural manner, an evaluation using <#63226#><#15694#>list<#15694#><#63226#>
does not need to expand <#63227#><#15695#>list<#15695#><#63227#> into uses of <#63228#><#15696#>cons<#15696#><#63228#> and
<#63229#><#15697#>empty<#15697#><#63229#>.
Following an old programming language convention, we may abbreviate lists and symbols even further. If a list is
formulated with <#63230#><#15699#>list<#15699#><#63230#>, we can simply agree to drop list and that
each opening parenthesis stands for itself and the word <#63231#><#15700#>list<#15700#><#63231#>. For
example,
<#15705#>'<#15705#><#15706#>(1<#15706#> <#15707#>2<#15707#> <#15708#>3)<#15708#>
<#15709#>;abbreviates <#15709#>
<#15710#>(list<#15710#> <#15711#>1<#15711#> <#15712#>2<#15712#> <#15713#>3)<#15713#>
<#15714#>;or<#15714#>
<#15715#>(cons<#15715#> <#15716#>1<#15716#> <#15717#>(cons<#15717#> <#15718#>2<#15718#> <#15719#>(cons<#15719#> <#15720#>3<#15720#> <#15721#>empty)))<#15721#> <#15722#>.<#15722#>
Similarly,
<#15730#>'<#15730#><#15731#>((1<#15731#> <#15732#>2)<#15732#> <#15733#>(3<#15733#> <#15734#>4)<#15734#> <#15735#>(5<#15735#> <#15736#>6))<#15736#>
<#15737#>;stands for<#15737#>
<#15738#>(list<#15738#> <#15739#>(list<#15739#> <#15740#>1<#15740#> <#15741#>2)<#15741#> <#15742#>(list<#15742#> <#15743#>3<#15743#> <#15744#>4)<#15744#> <#15745#>(list<#15745#> <#15746#>5<#15746#> <#15747#>6)),<#15747#>
which can be further expanded into <#63232#><#15751#>cons<#15751#><#63232#> and <#63233#><#15752#>empty<#15752#><#63233#>
expressions.
If we drop quotes in front of symbols and restore them where necessary,
abbreviating lists of symbols becomes a breeze:
<#15757#>'<#15757#><#15758#>(a<#15758#> <#15759#>b<#15759#> <#15760#>c)<#15760#>
<#15761#>;is an abbreviation for<#15761#>
<#15762#>(list<#15762#> <#15763#>'<#15763#><#15764#>a<#15764#> <#15765#>'<#15765#><#15766#>b<#15766#> <#15767#>'<#15767#><#15768#>c)<#15768#>
and
<#15776#>'<#15776#><#15777#>(;SPMlt;<#15777#><#15778#>html;SPMgt;<#15778#>
<#15779#>(;SPMlt;title;SPMgt;<#15779#> <#15780#>My<#15780#> <#15781#>First<#15781#> <#15782#>Web<#15782#> <#15783#>Page)<#15783#>
<#15784#>(;SPMlt;body;SPMgt;<#15784#> <#15785#>Oh!))<#15785#>
<#15786#>;means<#15786#>
<#15787#>(l<#15787#><#15788#>ist<#15788#> <#15789#>'<#15789#><#15790#>;SPMlt;html;SPMgt;<#15790#>
<#15791#>(list<#15791#> <#15792#>'<#15792#><#15793#>;SPMlt;title;SPMgt;<#15793#> <#15794#>'<#15794#><#15795#>My<#15795#> <#15796#>'<#15796#><#15797#>First<#15797#> <#15798#>'<#15798#><#15799#>Web<#15799#> <#15800#>'<#15800#><#15801#>Page)<#15801#>
<#15802#>(list<#15802#> <#15803#>'<#15803#><#15804#>;SPMlt;body;SPMgt;<#15804#> <#15805#>'<#15805#><#15806#>Oh!))<#15806#> <#15807#>.<#15807#>
<#15813#>Exercise 13.0.6<#15813#>
Restore <#63234#><#15815#>list<#15815#><#63234#> and quotes where necessary:
-
<#15820#>'<#15820#><#15821#>(1<#15821#> <#15822#>a<#15822#> <#15823#>2<#15823#> <#15824#>b<#15824#> <#15825#>3<#15825#> <#15826#>c)<#15826#>
-
<#15832#>'<#15832#><#15833#>(<#15833#><#15834#>(alan<#15834#> <#15835#>1000)<#15835#>
<#15836#>(barb<#15836#> <#15837#>2000)<#15837#>
<#15838#>(carl<#15838#> <#15839#>1500)<#15839#>
<#15840#>(dawn<#15840#> <#15841#>2300))<#15841#>
-
<#15847#>'<#15847#><#15848#>(<#15848#><#15849#>(My<#15849#> <#15850#>First<#15850#> <#15851#>Paper)<#15851#>
<#15852#>(Sean<#15852#> <#15853#>Fisler)<#15853#>
<#15854#>(S<#15854#><#15855#>ection<#15855#> <#15856#>1<#15856#>
<#15857#>(Subsection<#15857#> <#15858#>1<#15858#> <#15859#>Life<#15859#> <#15860#>is<#15860#> <#15861#>difficult)<#15861#>
<#15862#>(Subsection<#15862#> <#15863#>2<#15863#> <#15864#>But<#15864#> <#15865#>learning<#15865#> <#15866#>things<#15866#> <#15867#>makes<#15867#> <#15868#>it<#15868#> <#15869#>interesting))<#15869#>
<#15870#>(S<#15870#><#15871#>ection<#15871#> <#15872#>2<#15872#>
<#15873#>Conclusion?<#15873#> <#15874#>What<#15874#> <#15875#>conclusion?<#15875#><#15876#>))<#15876#>
Solution<#63235#><#63235#>