https://wiki.haskell.org/index.php?title=Ce_trebuie_sa_stiu_despre_vectorii_din_Haskell_%3F&feed=atom&action=history
Ce trebuie sa stiu despre vectorii din Haskell ? - Revision history
2024-03-19T01:37:20Z
Revision history for this page on the wiki
MediaWiki 1.35.5
https://wiki.haskell.org/index.php?title=Ce_trebuie_sa_stiu_despre_vectorii_din_Haskell_%3F&diff=33023&oldid=prev
Ha$kell at 12:03, 16 January 2010
2010-01-16T12:03:57Z
<p></p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 12:03, 16 January 2010</td>
</tr><tr>
<td colspan="2" class="diff-lineno">Line 163:</td>
<td colspan="2" class="diff-lineno">Line 163:</td>
</tr>
<tr>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td>
</tr>
<tr>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==. Bibliografie ==</div></td>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==. Bibliografie ==</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty"> </td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"></td>
</tr>
<tr>
<td class="diff-marker">−</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del class="diffchange diffchange-inline">Vedeti</del> [[Gentle]] subcapitolul 13.1 Index Types. Si urmatoarele subcapitole, sunt ultimele din '''[[Gentle]]'''.</div></td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins class="diffchange diffchange-inline">[[Vectorii]] sunt explicati in</ins> [[Gentle]] subcapitolul 13.1 Index Types. Si<ins class="diffchange diffchange-inline"> in</ins> urmatoarele subcapitole, sunt<ins class="diffchange diffchange-inline"> din (ne)fericire</ins> ultimele din '''[[Gentle]]'''.</div></td>
</tr>
<tr>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td>
</tr>
<tr>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td>
</tr>
</table>
Ha$kell
https://wiki.haskell.org/index.php?title=Ce_trebuie_sa_stiu_despre_vectorii_din_Haskell_%3F&diff=33017&oldid=prev
Ha$kell at 11:48, 16 January 2010
2010-01-16T11:48:23Z
<p></p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 11:48, 16 January 2010</td>
</tr><tr>
<td colspan="2" class="diff-lineno">Line 1:</td>
<td colspan="2" class="diff-lineno">Line 1:</td>
</tr>
<tr>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Category:Ro]]</div></td>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>[[Category:Ro]]</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty"> </td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"></td>
</tr>
<tr>
<td colspan="2" class="diff-empty"> </td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"></td>
</tr>
<tr>
<td colspan="2" class="diff-empty"> </td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><center></div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty"> </td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"></td>
</tr>
<tr>
<td colspan="2" class="diff-empty"> </td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>http://www.haskell.org/sitewiki/images/2/2c/BannerProLinuxAndHaskell.gif</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty"> </td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"></td>
</tr>
<tr>
<td colspan="2" class="diff-empty"> </td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>[http://stiinte.ub.ro La facultate poti invata unul din cele mai productive limbaje: Haskell.]</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty"> </td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></center></div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty"> </td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"></td>
</tr>
<tr>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td>
</tr>
<tr>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==. Au un tipuri speciale pentru indici ==</div></td>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==. Au un tipuri speciale pentru indici ==</div></td>
</tr>
<tr>
<td colspan="2" class="diff-lineno">Line 155:</td>
<td colspan="2" class="diff-lineno">Line 164:</td>
</tr>
<tr>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==. Bibliografie ==</div></td>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==. Bibliografie ==</div></td>
</tr>
<tr>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Vedeti [[Gentle]] subcapitolul 13.1 Index Types. Si urmatoarele subcapitole, sunt ultimele din '''[[Gentle]]'''.</div></td>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>Vedeti [[Gentle]] subcapitolul 13.1 Index Types. Si urmatoarele subcapitole, sunt ultimele din '''[[Gentle]]'''.</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty"> </td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"></td>
</tr>
<tr>
<td colspan="2" class="diff-empty"> </td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"></td>
</tr>
<tr>
<td colspan="2" class="diff-empty"> </td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"></td>
</tr>
<tr>
<td colspan="2" class="diff-empty"> </td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><center></div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty"> </td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"></td>
</tr>
<tr>
<td colspan="2" class="diff-empty"> </td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>http://www.haskell.org/sitewiki/images/2/2c/BannerProLinuxAndHaskell.gif</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty"> </td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"></td>
</tr>
<tr>
<td colspan="2" class="diff-empty"> </td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>[http://stiinte.ub.ro La facultate poti invata unul din cele mai productive limbaje: Haskell.]</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty"> </td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div></center></div></td>
</tr>
</table>
Ha$kell
https://wiki.haskell.org/index.php?title=Ce_trebuie_sa_stiu_despre_vectorii_din_Haskell_%3F&diff=33016&oldid=prev
Ha$kell: small fix
2010-01-16T11:43:55Z
<p>small fix</p>
<table class="diff diff-contentalign-left diff-editfont-monospace" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 11:43, 16 January 2010</td>
</tr><tr>
<td colspan="2" class="diff-lineno">Line 1:</td>
<td colspan="2" class="diff-lineno">Line 1:</td>
</tr>
<tr>
<td colspan="2" class="diff-empty"> </td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div>[[Category:Ro]]</div></td>
</tr>
<tr>
<td colspan="2" class="diff-empty"> </td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"></td>
</tr>
<tr>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==. Au un tipuri speciale pentru indici ==</div></td>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>==. Au un tipuri speciale pentru indici ==</div></td>
</tr>
<tr>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td>
</tr>
<tr>
<td colspan="2" class="diff-lineno">Line 37:</td>
<td colspan="2" class="diff-lineno">Line 39:</td>
</tr>
<tr>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td>
</tr>
<tr>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>class (Ord a) => Ix a where</div></td>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>class (Ord a) => Ix a where</div></td>
</tr>
<tr>
<td class="diff-marker">−</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> <del class="diffchange diffchange-inline">'''</del>range<del class="diffchange diffchange-inline">'''</del>:: (a,a) -> [a]</div></td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> range:: (a,a) -> [a]</div></td>
</tr>
<tr>
<td class="diff-marker">−</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> <del class="diffchange diffchange-inline">'''</del>index<del class="diffchange diffchange-inline">'''</del> :: (a,a) -> a -> Int</div></td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> index :: (a,a) -> a -> Int</div></td>
</tr>
<tr>
<td class="diff-marker">−</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div> <del class="diffchange diffchange-inline">'''</del>inrange<del class="diffchange diffchange-inline">'''</del> :: (a,a) -> a -> Bool</div></td>
<td class="diff-marker">+</td>
<td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div> inrange :: (a,a) -> a -> Bool</div></td>
</tr>
<tr>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"></td>
</tr>
<tr>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></haskell></div></td>
<td class="diff-marker"> </td>
<td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div></haskell></div></td>
</tr>
</table>
Ha$kell
https://wiki.haskell.org/index.php?title=Ce_trebuie_sa_stiu_despre_vectorii_din_Haskell_%3F&diff=33015&oldid=prev
Ha$kell at 11:42, 16 January 2010
2010-01-16T11:42:20Z
<p></p>
<p><b>New page</b></p><div>==. Au un tipuri speciale pentru indici ==<br />
<br />
Ca si in alte limbaje nu putem folosi la vectori orice tip de valori pe post de indici. Asa cum nu se pot folosi numerele reale in Pascal, de exemplu.<br />
<br />
Exista deci o multime de tipuri acceptate ca indici si ele formeaza o clasa de tipuri speciala.<br />
<br />
==. Ce proprietati au indicii ?==<br />
<br />
Un tip poate servi ca indice pentru un vector (care in realitate e stocat liniar) <br />
daca:<br />
<br />
1. Stiind capetele intervalului de indici putem genera lista finita a acelor indici. - Ceea ce nu se intampla pentru un interval de numere reale.<br />
Se spune ca un tip - indice trebuie sa posede, sa i se poata defini o functie <br />
range:<br />
<br />
'''range''':: (a,a) -> [a]<br />
<br />
2.Daca luam o valoare din acest interval de indici , pe baza ei trebuie sa se poata afla al catelea element este adresat - numaratoarea incepind de la zero.<br />
Stiti ca in unele cazuri (cum e limbajul Pascal) multimea indicilor elementelor unui vector nu e neaparat [0..n] paote fi [n..m] cu m >=n.<br />
<br />
Deci tipul indice va avea / trebuie sa poata avea o functie:<br />
<br />
'''index''' :: (a,a) -> a -> Int<br />
<br />
3.E recomandabil sa existe si o functie de verificare a indexilor incorecti.<br />
Ce face ? Verifica daca indicele este in interval si returneza true sau false.<br />
<br />
O numeau in engleza:<br />
'''inrange''' :: (a,a) -> a -> Bool<br />
<br />
==. Clasa de tipuri Ix ==<br />
<br />
Clasa de tipuri Ix a indicilor contine tipurile ordonabile (din clasa Ord)<br />
care au in plus si cele 3 functii de mai sus.<br />
<br />
<haskell><br />
<br />
class (Ord a) => Ix a where<br />
'''range''':: (a,a) -> [a]<br />
'''index''' :: (a,a) -> a -> Int<br />
'''inrange''' :: (a,a) -> a -> Bool<br />
<br />
</haskell><br />
Deci la nevoie orice tip din clasa Ord poate deveni un tip de clasa Ix (adica un index).<br />
<br />
==. Cum folosim index-ul la accesul la elementele vectorului ==<br />
Cu operatorul !<br />
In Haskell nu se scrie v[7] ci '''v ! 7'''.<br />
Dar pentru asta trebuie sa definim vectorul.<br />
<br />
==. Declaratia de vector ==<br />
<br />
1. Este cu initializare.<br />
2. Trebuie specificat intervalul de indexi sub forma (imin, imax) , deci ca o pereche sau ca la notatia matematica pentru intervalele deschise. (desi aici la noi extremele se includ!).<br />
3. Trebuie data lista de perechi (indice, valoare) pe care va actiona mecanismul de indexare.<br />
<br />
Ex: din (1,5) [ (1,1), (2,4) , (3,9) , (4,16) , (5,25) ]<br />
<br />
se poate defini vectorul de patrate ale primelor 5 intregi:<br />
<br />
'''patrate = array (1,5) [ (1,1), (2,4) , (3,9) , (4,16) , (5,25) ] '''<br />
<br />
Obs: Cel mai des lista de valori se da in stil implicit, descriptiv, nu explicit, enumerat, si adesea intervalul de indici e folosit iarasi, la descriere. Desi nu e obligatoriu.<br />
<br />
Ex: din (1,5) [ (i, i*i) | i <- (1,5) ]<br />
<br />
'''patrate' = array (1,5) [ (i, i*i) | i <- (1,5) ] '''<br />
<br />
==. Exemple de acces la elemente ==<br />
<br />
patrate ! 3 <br />
<br />
9<br />
<br />
patrate' 4 <br />
<br />
16<br />
<br />
<br />
==. Declaratii simplificate ==<br />
<br />
Daca va este dor de declaratiile simple din alte limbaje, cum este <br />
Pascal-ul va puteti defini propriile functii de definire la vectori.<br />
<br />
Definind, sa zicem:<br />
<br />
_Vector f interval = array interval [ (i,f i) | i <- range interval]<br />
<br />
Putem de acum incolo sa declaram vectorii asa:<br />
<br />
v =_Vector (\x -> x*x) (1,10)<br />
<br />
Si bineinteles indexarea ramane la fel:<br />
<br />
v ! 10<br />
100<br />
<br />
==. Exercitiu ==<br />
Rescrieti functia _Vector astfel ca sa fie apelata cu:<br />
<br />
v = _NewVector (\x -> x*x) [1,10]<br />
<br />
pentru a obtine vectorul de patrate.<br />
<br />
==. Biblioteci/Module de importat ? ==<br />
Importati in program modulul Array.<br />
Eventual, daca lucrati cu vectori de caractere (observati ca nu le spunem Stringuri) puteti avea nevoie si de Data.Char. (aici e functia ord, de exemplu.)<br />
<br />
==. Exemplu de cod pentru primul contact cu vectorii==<br />
<br />
<haskell><br />
import Array<br />
import Data.Char<br />
<br />
-- array :: Ix a => (a,a) -> [ (a,b) ] -> Array a b<br />
-- pereche, lista de perechi indice - valoare <br />
<br />
<br />
<br />
cuburi = array (1,10) [ (i, i*i*i) | i <- range (1,10) ]<br />
<br />
-- aici i-urile provin din acelasi interval (1,10) <br />
<br />
<br />
-- cuburi ! 10 <br />
-- 1000<br />
<br />
vector = array (1,3) [ (1, "ala") , (2,"bala") , (3, "portocala") ]<br />
<br />
-- vector 1<br />
-- "ala"<br />
<br />
-- vect<br />
-- "bala"<br />
<br />
alfabet = array (ord 'a', ord 'z') [ (ord j , j) | j <- range ('a','z') ]<br />
<br />
---------------------------------------------------------------<br />
<br />
_Vector f interval = array interval [ (i,f i) | i <- range interval]<br />
<br />
v =_Vector (\x -> x*x) (1,10)<br />
<br />
-- v ! 10<br />
-- 100<br />
<br />
</haskell><br />
<br />
==. Nu va place operatorul de indexare ! ?==<br />
Redefiniti-l astfel ca sa semene cu paranteza []. Se poate obtine ceva <br />
mai apropiat de notatia din alte limbaje.<br />
<br />
==. Bibliografie ==<br />
Vedeti [[Gentle]] subcapitolul 13.1 Index Types. Si urmatoarele subcapitole, sunt ultimele din '''[[Gentle]]'''.</div>
Ha$kell