<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?action=history&amp;feed=atom&amp;title=Rel_8_%28rev_1%29</id>
	<title>Rel 8 (rev 1) - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?action=history&amp;feed=atom&amp;title=Rel_8_%28rev_1%29"/>
	<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Rel_8_(rev_1)&amp;action=history"/>
	<updated>2026-07-19T02:00:01Z</updated>
	<subtitle>Historial de revisiones para esta página en el wiki</subtitle>
	<generator>MediaWiki 1.31.14</generator>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Rel_8_(rev_1)&amp;diff=748&amp;oldid=prev</id>
		<title>Mjoseh: Protegió «Rel 8 (rev 1)» ([Editar=Solo administradores] (indefinido) [Trasladar=Solo administradores] (indefinido))</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Rel_8_(rev_1)&amp;diff=748&amp;oldid=prev"/>
		<updated>2020-04-13T15:16:52Z</updated>

		<summary type="html">&lt;p&gt;Protegió «&lt;a href=&quot;/~jalonso/LMF2020/index.php/Rel_8_(rev_1)&quot; title=&quot;Rel 8 (rev 1)&quot;&gt;Rel 8 (rev 1)&lt;/a&gt;» ([Editar=Solo administradores] (indefinido) [Trasladar=Solo administradores] (indefinido))&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 15:16 13 abr 2020&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;es&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Sin diferencias)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Mjoseh</name></author>
		
	</entry>
	<entry>
		<id>https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Rel_8_(rev_1)&amp;diff=747&amp;oldid=prev</id>
		<title>Mjoseh: Página creada con «&lt;source lang = &quot;isabelle&quot;&gt;  chapter ‹ R8 Programación funcional en Isabelle ›  theory R8_wiki_rev imports Main  begin  text ‹ ---------------------------------------…»</title>
		<link rel="alternate" type="text/html" href="https://www.glc.us.es/~jalonso/LMF2020/index.php?title=Rel_8_(rev_1)&amp;diff=747&amp;oldid=prev"/>
		<updated>2020-04-13T15:16:39Z</updated>

		<summary type="html">&lt;p&gt;Página creada con «&amp;lt;source lang = &amp;quot;isabelle&amp;quot;&amp;gt;  chapter ‹ R8 Programación funcional en Isabelle ›  theory R8_wiki_rev imports Main  begin  text ‹ ---------------------------------------…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang = &amp;quot;isabelle&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
chapter ‹ R8 Programación funcional en Isabelle ›&lt;br /&gt;
&lt;br /&gt;
theory R8_wiki_rev&lt;br /&gt;
imports Main &lt;br /&gt;
begin&lt;br /&gt;
&lt;br /&gt;
text ‹ ----------------------------------------------------------------&lt;br /&gt;
  Ejercicio 0. Definir, por recursión, la función&lt;br /&gt;
     factorial :: nat ⇒ nat&lt;br /&gt;
  tal que (factorial n) es el factorial de n. Por ejemplo,&lt;br /&gt;
     factorial 4 = 24&lt;br /&gt;
  ------------------------------------------------------------------- ›&lt;br /&gt;
&lt;br /&gt;
  (*enrniecar alesancan1 antrivmar dessanriv anapalsan3 belbenzam dantruvar inehenluq marsigfon anagongir &lt;br /&gt;
jespergue elivazser manmorgar12 anamosper juanarcon laudiasan1 anaferpec carboncar monlagare rauestage*)&lt;br /&gt;
fun factorial :: &amp;quot;nat ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;factorial 0 = 1&amp;quot;&lt;br /&gt;
| &amp;quot;factorial (Suc m) = (Suc m)*factorial m&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*inmrodmon*)&lt;br /&gt;
fun factorial1 :: &amp;quot;nat ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;factorial1 n = ( if n=0 then 1 else n * factorial1 (n-1)) &amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*hernavsan*)&lt;br /&gt;
fun factorial2 :: &amp;quot;nat ⇒ nat&amp;quot; where&lt;br /&gt;
   &amp;quot;factorial2 0 = 1&amp;quot;&lt;br /&gt;
 | &amp;quot;factorial2 n = n*factorial2 (n-1)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
text ‹ ----------------------------------------------------------------&lt;br /&gt;
  Ejercicio 1. Definir, por recursión, la función&lt;br /&gt;
     longitud :: &amp;#039;a list ⇒ nat&lt;br /&gt;
  tal que (longitud xs) es la longitud de la listas xs. Por ejemplo,&lt;br /&gt;
     longitud [4,2,5] = 3&lt;br /&gt;
  ------------------------------------------------------------------- ›&lt;br /&gt;
&lt;br /&gt;
(*enrniecar antrivmar alesancan1 dessanriv anapalsan3 belbenzam dantruvar inehenluq marsigfon anagongir &lt;br /&gt;
jespergue elivazser manmorgar12 anamosper juanarcon laudiasan1 rauestage monlagare*)&lt;br /&gt;
fun longitud :: &amp;quot;&amp;#039;a list ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;longitud [] = 0&amp;quot;&lt;br /&gt;
| &amp;quot;longitud xs = 1 + longitud (tl(xs))&amp;quot;&lt;br /&gt;
   &lt;br /&gt;
(*inmrodmon carboncar*)&lt;br /&gt;
fun longitud1 :: &amp;quot;&amp;#039;a list ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;longitud1 xs = ( if xs=[] then 0 else 1 + longitud1 (tl xs) )&amp;quot; &lt;br /&gt;
&lt;br /&gt;
(*anaferpec hernavsan*)&lt;br /&gt;
fun longitud2 :: &amp;quot;&amp;#039;a list ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;longitud2 [] = 0&amp;quot;&lt;br /&gt;
| &amp;quot;longitud2 (x#xs) = 1 + longitud2 xs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;longitud [a,b,c] = 3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹ --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 2. Definir la función&lt;br /&gt;
     fun intercambia :: &amp;#039;a × &amp;#039;b ⇒ &amp;#039;b × &amp;#039;a&lt;br /&gt;
  tal que (intercambia p) es el par obtenido intercambiando las&lt;br /&gt;
  componentes del par p. Por ejemplo,&lt;br /&gt;
     intercambia (u,v) = (v,u)&lt;br /&gt;
  ------------------------------------------------------------------ ›&lt;br /&gt;
&lt;br /&gt;
(*enrniecar antrivmar alesancan1 dessanriv anapalsan3 belbenzam dantruvar inehenluq marsigfon anagongir&lt;br /&gt;
 jespergue elivazser manmorgar12 juanarcon laudiasan1 anaferpec carboncar monlagare rauestage hernavsan*)&lt;br /&gt;
fun intercambia :: &amp;quot;&amp;#039;a × &amp;#039;b ⇒ &amp;#039;b × &amp;#039;a&amp;quot; where&lt;br /&gt;
  &amp;quot;intercambia (x,y) = (y,x)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fun intercambia2 :: &amp;quot;&amp;#039;a × &amp;#039;b ⇒ &amp;#039;b × &amp;#039;a&amp;quot; where&lt;br /&gt;
  &amp;quot;intercambia2 (x,y) = (snd(x,y), fst(x,y))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;intercambia (u,v) = (v,u)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹ --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 3. Definir, por recursión, la función&lt;br /&gt;
     inversa :: &amp;#039;a list ⇒ &amp;#039;a list&lt;br /&gt;
  tal que (inversa xs) es la lista obtenida invirtiendo el orden de los&lt;br /&gt;
  elementos de xs. Por ejemplo,&lt;br /&gt;
     inversa [a,d,c] = [c,d,a]&lt;br /&gt;
  ------------------------------------------------------------------ ›&lt;br /&gt;
&lt;br /&gt;
(*enrniecar antrivmar alesancan1 dessanriv belbenzam dantruvar marsigfon jespergue elivazser manmorgar12 laudiasan1&lt;br /&gt;
 monlagare *)&lt;br /&gt;
fun inversa :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;inversa [] = []&amp;quot;&lt;br /&gt;
| &amp;quot;inversa xs = Cons (last(xs)) (inversa(butlast xs))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(* anapalsan3 inehenluq anagongir anamosper juanarcon anaferpec carboncar*)&lt;br /&gt;
fun inversa2 :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;inversa2 [] = []&amp;quot;&lt;br /&gt;
| &amp;quot;inversa2 (x#xs) =  (inversa2 xs) @[x]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*hernavsan*)&lt;br /&gt;
fun inversa3 :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;inversa3 [] = []&amp;quot;&lt;br /&gt;
| &amp;quot;inversa3 xs = (last xs)#(inversa3 (butlast xs))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;inversa [a,d,c] = [c,d,a]&amp;quot;&lt;br /&gt;
value &amp;quot;inversa2 [a,d,c] = [c,d,a]&amp;quot;&lt;br /&gt;
value &amp;quot;inversa3 [a,b,c,d] = [d,c,b,a]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹ --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 4. Definir la función&lt;br /&gt;
     repite :: nat ⇒ &amp;#039;a ⇒ &amp;#039;a list&lt;br /&gt;
  tal que (repite n x) es la lista formada por n copias del elemento&lt;br /&gt;
  x. Por ejemplo, &lt;br /&gt;
     repite 3 a = [a,a,a]&lt;br /&gt;
  ------------------------------------------------------------------ ›&lt;br /&gt;
(*antrivmar  belbenzam  alesancan1 enrniecar dessanriv dantruvar inehenluq marsigfon jespergue elivazser &lt;br /&gt;
manmorgar12 juanarcon laudiasan1 monlagare rauestage *)&lt;br /&gt;
fun repite :: &amp;quot;nat ⇒ &amp;#039;a ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;repite 0 x       = []&amp;quot;&lt;br /&gt;
 |&amp;quot;repite (Suc m) x = Cons x (repite m x)  &amp;quot;&lt;br /&gt;
&lt;br /&gt;
(* anapalsan3 anagongir carboncar*)&lt;br /&gt;
fun repite2 :: &amp;quot;nat ⇒ &amp;#039;a ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;repite2 0 x = []&amp;quot;&lt;br /&gt;
 |&amp;quot;repite2 (Suc n) x = x#(repite n x)&amp;quot; &lt;br /&gt;
&lt;br /&gt;
(*inmrodmon*)&lt;br /&gt;
fun repite3 :: &amp;quot;nat ⇒ &amp;#039;a ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;repite3 n x = ( if n=0 then [] else x#(repite3 (n-1) x) )&amp;quot; &lt;br /&gt;
&lt;br /&gt;
(*anamosper anaferpec*)&lt;br /&gt;
fun repite4 :: &amp;quot;nat ⇒ &amp;#039;a ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;repite4 0 x = []&amp;quot;&lt;br /&gt;
| &amp;quot;repite4 (Suc n) x = (repite4 n x)@[x]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*hernavsan*)&lt;br /&gt;
fun repite5 :: &amp;quot;nat ⇒ &amp;#039;a ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
 &amp;quot;repite5 0 x =[]&amp;quot;&lt;br /&gt;
|&amp;quot;repite5 n x =Cons x (repite5 (n-1) x) &amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;repite 3 a = [a,a,a]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹ --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 5. Definir la función&lt;br /&gt;
     conc :: &amp;#039;a list ⇒ &amp;#039;a list ⇒ &amp;#039;a list&lt;br /&gt;
  tal que (conc xs ys) es la concatención de las listas xs e ys. Por&lt;br /&gt;
  ejemplo, &lt;br /&gt;
     conc [a,d] [b,d,a,c] = [a,d,b,d,a,c]&lt;br /&gt;
  ------------------------------------------------------------------ ›&lt;br /&gt;
(*antrivmar enrniecar dessanriv  alesancan1 belbenzam dantruvar inehenluq marsigfon anagongir&lt;br /&gt;
 jespergue elivazser manmorgar12 juanarcon laudiasan1 carboncar*)&lt;br /&gt;
fun conc :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;conc [] ys       = ys&amp;quot;&lt;br /&gt;
| &amp;quot;conc (Cons x xs) ys = Cons x (conc xs ys)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(* anapalsan3*)&lt;br /&gt;
fun conc2 :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;conc2 xs [] = xs&amp;quot;&lt;br /&gt;
 |&amp;quot;conc2 xs (y#ys) = conc2 (xs @[y]) ys&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(* Comentario a la función conc2: &lt;br /&gt;
   no se debe usar la función para concatenar listas (@) *)&lt;br /&gt;
&lt;br /&gt;
(*anamosper monlagare*)&lt;br /&gt;
fun conc3 :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;conc3 [] ys = ys &amp;quot;&lt;br /&gt;
| &amp;quot;conc3 (x#xs) ys = Cons x (conc3 xs ys)&amp;quot; &lt;br /&gt;
&lt;br /&gt;
(*anaferpec*)&lt;br /&gt;
fun conc4 :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;conc4 xs ys = xs @ ys&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(* Comentario a la función conc4: &lt;br /&gt;
   no se debe usar la función para concatenar listas (@) *)&lt;br /&gt;
&lt;br /&gt;
(*hernavsan*)&lt;br /&gt;
fun conc5 :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
&amp;quot;conc5 [] ys = ys&amp;quot;&lt;br /&gt;
|&amp;quot;conc5 xs [] = xs&amp;quot;&lt;br /&gt;
|&amp;quot;conc5 xs (y#ys) = conc5 (xs@[y]) ys&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(* Comentario a la función conc5: &lt;br /&gt;
   no se debe usar la función para concatenar listas (@) *)&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;conc [a,d] [b,d,a,c] = [a,d,b,d,a,c]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹ --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 6. Definir la función&lt;br /&gt;
     coge :: nat ⇒ &amp;#039;a list ⇒ &amp;#039;a list&lt;br /&gt;
  tal que (coge n xs) es la lista de los n primeros elementos de xs. Por &lt;br /&gt;
  ejemplo, &lt;br /&gt;
     coge 2 [a,c,d,b,e] = [a,c]&lt;br /&gt;
  ------------------------------------------------------------------ ›&lt;br /&gt;
(*antrivmar*)&lt;br /&gt;
fun coge :: &amp;quot;nat ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
&amp;quot;coge 0 xs = []&amp;quot;&lt;br /&gt;
| &amp;quot;coge m [] = []&amp;quot;&lt;br /&gt;
| &amp;quot;coge (Suc m) (Cons x xs) =  x # coge m xs&amp;quot; &lt;br /&gt;
&lt;br /&gt;
(*enrniecar dessanriv belbenzam alesancan1 dantruvar inehenluq anagongir jespergue elivazser &lt;br /&gt;
manmorgar12 juanarcon laudiasan1*)&lt;br /&gt;
fun coge1 :: &amp;quot;nat ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;coge1 0 xs =[] &amp;quot;&lt;br /&gt;
| &amp;quot;coge1 m [] = []&amp;quot;&lt;br /&gt;
| &amp;quot;coge1 (Suc m) (Cons x xs) = Cons x (coge1 m xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(* anapalsan3 anamosper monlagare *)&lt;br /&gt;
fun coge2 :: &amp;quot;nat ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;coge2 0 xs = []&amp;quot;&lt;br /&gt;
| &amp;quot;coge2 (Suc n) [] = []&amp;quot;&lt;br /&gt;
| &amp;quot;coge2 (Suc n) (x#xs) = x# (coge2 n xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*anaferpec*)&lt;br /&gt;
fun coge3 :: &amp;quot;nat ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;coge3 0 _ = [] &amp;quot;&lt;br /&gt;
| &amp;quot;coge3 _ [] = [] &amp;quot;&lt;br /&gt;
| &amp;quot;coge3 (Suc n) xs =[hd xs] @ coge3 n (tl xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*carboncar*)&lt;br /&gt;
fun coge4 :: &amp;quot;nat ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;coge4 0 xs = []&amp;quot;&lt;br /&gt;
| &amp;quot;coge4 n [] = []&amp;quot; &lt;br /&gt;
| &amp;quot;coge4 (Suc n) xs = hd xs # coge4 n (tl xs)&amp;quot; &lt;br /&gt;
&lt;br /&gt;
(*hernavsan*)&lt;br /&gt;
fun coge5 :: &amp;quot;nat ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
 &amp;quot;coge5 0 xs = []&amp;quot;&lt;br /&gt;
|&amp;quot;coge5 n [] = []&amp;quot;&lt;br /&gt;
|&amp;quot;coge5 n (x#xs) = x#(coge5 (n-1) xs)&amp;quot; &lt;br /&gt;
&lt;br /&gt;
value &amp;quot;coge 2 [a,c,d,b,e] = [a,c]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹ --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 7. Definir la función&lt;br /&gt;
     elimina :: nat ⇒ &amp;#039;a list ⇒ &amp;#039;a list&lt;br /&gt;
  tal que (elimina n xs) es la lista obtenida eliminando los n primeros&lt;br /&gt;
  elementos de xs. Por ejemplo, &lt;br /&gt;
     elimina 2 [a,c,d,b,e] = [d,b,e]&lt;br /&gt;
  ------------------------------------------------------------------ ›&lt;br /&gt;
(*antrivmar alesancan1 belbenzam enrniecar dessanriv dantruvar inehenluq marsigfon anagongir &lt;br /&gt;
jespergue elivazser manmorgar12 anamosper juanarcon laudiasan1*)&lt;br /&gt;
fun elimina :: &amp;quot;nat ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
 &amp;quot;elimina 0 xs = xs&amp;quot;&lt;br /&gt;
| &amp;quot;elimina m [] =[]&amp;quot;&lt;br /&gt;
| &amp;quot;elimina (Suc m) (Cons x xs) = elimina m xs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(* anapalsan3 monlagare*)&lt;br /&gt;
fun elimina2 :: &amp;quot;nat ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;elimina2 0 xs = xs&amp;quot;&lt;br /&gt;
| &amp;quot;elimina2 (Suc n) [] = []&amp;quot;&lt;br /&gt;
| &amp;quot;elimina2 (Suc n) (x#xs) = elimina2 n xs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*inmrodmon*)&lt;br /&gt;
fun elimina3 :: &amp;quot;nat ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;elimina3 n xs = ( if n=0 then xs else elimina3 (n-1) (tl xs))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*anaferpec carboncar*)&lt;br /&gt;
(* fun elimina4 :: &amp;quot;nat ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;elimina4 0 _ = _&amp;quot;&lt;br /&gt;
| &amp;quot;elimina4 _ [] = []&amp;quot;&lt;br /&gt;
| &amp;quot;elimina4 (Suc n) xs = elimina4 n (tl xs)&amp;quot; *)&lt;br /&gt;
&lt;br /&gt;
(* Comentario: la función elimina4 no es correcta. En la primera ecuación&lt;br /&gt;
el resultado es un valor indeterminado, por lo que Isabelle no admite la&lt;br /&gt;
definición. *)&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;elimina 2 [a,c,d,b,e] = [d,b,e]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹ --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 8. Definir la función&lt;br /&gt;
     esVacia :: &amp;#039;a list ⇒ bool&lt;br /&gt;
  tal que (esVacia xs) se verifica si xs es la lista vacía. Por ejemplo,&lt;br /&gt;
     esVacia []  = True&lt;br /&gt;
     esVacia [1] = False&lt;br /&gt;
  ------------------------------------------------------------------ ›&lt;br /&gt;
(*antrivmar alesancan1 enrniecar dessanriv belbenzam dantruvar inehenluq marsigfon anagongir&lt;br /&gt;
 jespergue elivazser manmorgar12 juanarcon laudiasan1 carboncar monlagare hernavsan*)&lt;br /&gt;
fun esVacia :: &amp;quot;&amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
    &amp;quot;esVacia [] = True&amp;quot;&lt;br /&gt;
|   &amp;quot;esVacia _ = False&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(* anapalsan3*)&lt;br /&gt;
fun esVacia2 :: &amp;quot;&amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;esVacia2 xs = (elimina 0 xs = [])&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*anamosper anaferpec*)&lt;br /&gt;
fun esVacia3:: &amp;quot;&amp;#039;a list ⇒ bool&amp;quot; where&lt;br /&gt;
  &amp;quot;esVacia3 xs = (if xs=[] then True else False) &amp;quot; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;esVacia [a] = False&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹ --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 9. Definir la función&lt;br /&gt;
     inversaAc :: &amp;#039;a list ⇒ &amp;#039;a list&lt;br /&gt;
  tal que (inversaAc xs) es a inversa de xs calculada usando&lt;br /&gt;
  acumuladores. Por ejemplo, &lt;br /&gt;
     inversaAc [a,c,b,e] = [e,b,c,a]&lt;br /&gt;
  ------------------------------------------------------------------ ›&lt;br /&gt;
(*antrivmar*)&lt;br /&gt;
fun inversaAcAux :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;inversaAcAux [] ys = ys&amp;quot;&lt;br /&gt;
| &amp;quot;inversaAcAux (Cons x xs) ys = inversaAcAux xs ( x# ys)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fun inversaAc :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;inversaAc xs = inversaAcAux xs [] &amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*enrniecar dessanriv alesancan1 belbenzam dantruvar inehenluq anagongir elivazser &lt;br /&gt;
manmorgar12 juanarcon laudiasan1 carboncar jespergue*)&lt;br /&gt;
fun inversaAcAux2 :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;inversaAcAux2 [] ys = ys&amp;quot;&lt;br /&gt;
| &amp;quot;inversaAcAux2 (Cons x xs) ys = inversaAcAux2 xs (Cons x ys)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fun inversaAc2 :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;inversaAc2 [] = []&amp;quot;&lt;br /&gt;
| &amp;quot;inversaAc2 (Cons x xs) = inversaAcAux2 xs [x]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(* Comentario a la función inversaAc2: la primera ecuación no es necesaria.*)&lt;br /&gt;
&lt;br /&gt;
(* anapalsan3 anamosper anaferpec monlagare*)&lt;br /&gt;
fun inversaAcAux3 :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;inversaAcAux3 [] ys = ys&amp;quot; &lt;br /&gt;
| &amp;quot;inversaAcAux3 (x#xs) ys = inversaAcAux3 xs (x#ys)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
fun inversaAc3 :: &amp;quot;&amp;#039;a list ⇒ &amp;#039;a list&amp;quot; where&lt;br /&gt;
  &amp;quot;inversaAc3 xs = inversaAcAux3 xs []&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;inversaAc3 [a,c,b,e] = [e,b,c,a]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹ --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 10. Definir la función&lt;br /&gt;
     sum :: nat list ⇒ nat&lt;br /&gt;
  tal que (sum xs) es la suma de los elementos de xs. Por ejemplo,&lt;br /&gt;
     sum [3,2,5] = 10&lt;br /&gt;
  ------------------------------------------------------------------ ›&lt;br /&gt;
(*antrivmar enrniecar alesancan1 dessanriv belbenzam dantruvar inehenluq anagongir elivazser manmorgar12&lt;br /&gt;
juanarcon laudiasan1 rauestage jespergue*)&lt;br /&gt;
fun sum :: &amp;quot;nat list ⇒ nat&amp;quot; where&lt;br /&gt;
   &amp;quot;sum []  = 0&amp;quot;&lt;br /&gt;
| &amp;quot;sum (Cons x xs) = x+ sum xs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(* anapalsan3 anamosper anaferpec monlagare hernavsan*)&lt;br /&gt;
fun sum2 :: &amp;quot;nat list ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;sum2 [] = 0&amp;quot;&lt;br /&gt;
| &amp;quot;sum2 (x#xs) = x + sum2 xs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*inmrodmon*)&lt;br /&gt;
fun sum3 :: &amp;quot;nat list ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;sum3 xs = ( if xs = [] then 0 else (hd xs) + sum3 (tl xs))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*carboncar*)&lt;br /&gt;
fun sum4 :: &amp;quot;nat list ⇒ nat&amp;quot; where&lt;br /&gt;
  &amp;quot;sum4 [] = 0&amp;quot;&lt;br /&gt;
| &amp;quot;sum4 xs = hd xs + sum4 (tl xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;sum [3,2,5] = 10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
text ‹ --------------------------------------------------------------- &lt;br /&gt;
  Ejercicio 11. Definir la función&lt;br /&gt;
     map :: (&amp;#039;a ⇒ &amp;#039;b) ⇒ &amp;#039;a list ⇒ &amp;#039;b list&lt;br /&gt;
  tal que (map f xs) es la lista obtenida aplicando la función f a los&lt;br /&gt;
  elementos de xs. Por ejemplo,&lt;br /&gt;
     map (λx. 2*x) [3,2,5] = [6,4,10]&lt;br /&gt;
  ------------------------------------------------------------------ ›&lt;br /&gt;
(*antrivmar*)&lt;br /&gt;
fun map :: &amp;quot;(int ⇒ int) ⇒ int list ⇒ int list&amp;quot; where&lt;br /&gt;
  &amp;quot;map f [] = []&amp;quot;&lt;br /&gt;
| &amp;quot;map f (Cons x xs) = f x # map f xs  &amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(* Comentario a la función map: el tipo de la función ha ser genérico,&lt;br /&gt;
no restringido a el tipo de los enteros (int)&lt;br /&gt;
map :: (&amp;#039;a ⇒ &amp;#039;b) ⇒ &amp;#039;a list ⇒ &amp;#039;b list&lt;br /&gt;
*)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(*enrniecar dessanriv alesancan1 belbenzam dantruvar inehenluq &lt;br /&gt;
anagongir manmorgar12 juanarcon laudiasan1 jespergue*)&lt;br /&gt;
&lt;br /&gt;
fun map2 :: &amp;quot;(int ⇒ int) ⇒ int list ⇒ int list&amp;quot; where&lt;br /&gt;
  &amp;quot;map2 f [] = []&amp;quot;&lt;br /&gt;
| &amp;quot;map2 f (Cons x xs) = Cons (f x) (map2 f xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(* Comentario a la función map2: el tipo de la función ha ser genérico,&lt;br /&gt;
no restringido a el tipo de los enteros (int)&lt;br /&gt;
map :: (&amp;#039;a ⇒ &amp;#039;b) ⇒ &amp;#039;a list ⇒ &amp;#039;b list&lt;br /&gt;
*)&lt;br /&gt;
&lt;br /&gt;
(* anapalsan3 anaferpec carboncar*)&lt;br /&gt;
fun map3 :: &amp;quot;(&amp;#039;a ⇒ &amp;#039;b) ⇒ &amp;#039;a list ⇒ &amp;#039;b list&amp;quot; where&lt;br /&gt;
  &amp;quot;map3 f [] = []&amp;quot;&lt;br /&gt;
| &amp;quot;map3 f (x#xs) = (f x) # (map3 f xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(*elivazser*)&lt;br /&gt;
fun map4 :: &amp;quot;(&amp;#039;a ⇒ &amp;#039;b) ⇒ &amp;#039;a list ⇒ &amp;#039;b list&amp;quot; where&lt;br /&gt;
  &amp;quot;map4 f [] = []&amp;quot;&lt;br /&gt;
| &amp;quot;map4 f (Cons x xs) = Cons (f x) (map4 f xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(*anamosper monlagare *)&lt;br /&gt;
fun map5 :: &amp;quot;(&amp;#039;a ⇒ &amp;#039;b) ⇒ &amp;#039;a list ⇒ &amp;#039;b list&amp;quot; where&lt;br /&gt;
  &amp;quot;map5 f [] = []&amp;quot;&lt;br /&gt;
| &amp;quot;map5 f (x#xs) = Cons (f x) (map5 f xs)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
value &amp;quot;map3 (λx. 2*x) [3::nat,2,5] = [6,4,10]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mjoseh</name></author>
		
	</entry>
</feed>