Sie sind auf Seite 1von 4

Gua de lenguajes

Aclaraciones

(*)Significaqueslofuncionaparalistas(Wollok)
(**)SignificaqueestdeclaradaenData.List(Haskell)
(***)Significaqueeltipopresentadoacesunaversinsimplificadadeltiporeal(Haskell)
NAsignificaNoAplica.Enotraspalabras,onoexisteonoserecomiendasuuso.

Elementos Comunes
Comentarios
Wollok

Haskell

Prolog

//uncomentario
/*uncomentario
multilnea*/

uncomentario
{uncomentario
multilnea}

%uncomentario
/*Uncomentario
multilnea*/

Valores Literales

Wollok

Haskell

Prolog

Strings

uNaCadEna

uNaCadEna

uNaCadEna

NA

Caracteres

NA

NA

Smbolos/tomos

NA

NA

unAtomo

Booleanos

truefalse

TrueFalse

NA

Coleccin/Lista

[1,2,3](Lista)
#{1,2,3}(Set)

[1,2,3]
1:2:3:[]

[1,2,3][1,bart,[]]
[1|[2|[3|[]]]]

Tuplas

NA

(1,True,[1,2])

NA

Data/Functores

NA

Constructor1True

nombreFunctor(1,unAtomo)

Bloques/Funciones
Annimas

{param1,param2=>
cuerpo}

\param1param2>cuerpo NA

Operadores lgicos y matemticos

Wollok

Haskell

Prolog

Equivalencia

==

==

NA

Identidad

===

NA

NA

~Equivalencia

!=

/=

\=

Comparacindeorden

>>=<<=

>>=<<=

>>=<=<

Disyuncin(Olgico)

||

||

NA

Conjuncin(Ylgico)

&&

&&

Negacin

!unBool
unBool.negate()
notunBool

notunBool

not(Consulta)

GuadeLenguajesv2.1Pgina1de4

Operadores matemticos

Wollok

Haskell

Prolog(slousandois)

Operadoresaritmticos
comunes

+*/

+*/

+*/

Divisinentera

dividendoEntero/
divisor

divdividendodivisor

dividendo//divisor

Resto

dividendo%divisor

moddividendodivisor

dividendomoddivisor

Valorabsoluto

unNro.abs()

absunNro

abs(Nro)

Exponenciacin

base**exponente

base^exponente

base**exponente

Razcuadrada

NA

sqrtunNro

sqrt(Nro)

Mximomnimoentredos
nmeros

unNro.max(otroNro)
unNro.min(otroNro)

maxunNrootroNro
minunNrootroNro

NA

Bloques / Lambdas

Wollok

Haskell

Sinparmetros

{loquequierohacer}

NA

Deunparmetro

{x=>loquequierohacerconx}

(\x>loquequierohacerconx)

Msdeunparmetro

{x,y=>algoconxey}

(\xy>algoconxey)

Haskell

Prolog

Listas

[]
(cabeza:cola)
(cabeza:segundo:cola)

[]
[Cabeza|Cola]
[Cabeza,Segundo|Cola]

Tuplas

(componente1,componente2)

NA

Data/Functores

Constructorcomponente1componente2 nombreFunctor(componente1,componente2)

Variableannima

Patrones

Operaciones simples sin efecto (efecto colateral) sobre colecciones / listas

Wollok(mensajes)

Haskell(funciones)

Prolog
(predicados)

Longitud

size()

length::[a]>Int
length/2
genericLength::Numn=>[a]>n

Sabersiestvaca

isEmpty()

null

NA

Concatenacin

NA

++

append/3

Unin

NA

union(**)

union/3

Interseccin

NA

intersect(**)

intersection/3

GuadeLenguajesv2.1Pgina2de4


Accesoporndice

get(indice)
(
base0,Listas)

unaLista!!unNro
(
base0)

nth0/3
nth1/3

Pertenencia

contains(elem)

elem

member/2

Mximomnimodeun
conjuntodenmeros

NA

maximum
minimum

max_member/2
min_member/2

Sumatoriadeunconjuntode
nmeros

NA

sum

sumlist/2

Aplanarcoleccinde
colecciones/listadelistas

flatten()

concat

flatten/2

Operaciones avanzadas sin efecto (efecto colateral) sobre colecciones/listas

Wollok

Haskell

Sumatoriadeunconjuntodeelementos
segnunatransformacin

sum(bloqueDe1)

NA

Primerosnelementosdeunconjunto

NA

take::Int>[a]>[a]

Filtrar

filter(bloqueDe1)

filter::(a>Bool)>[a]>[a]

Transformar

map(bloqueDe1)

map::(a>b)>[a]>[b]

Todoscumplen(verdaderoparalista
vaca)

all(bloqueDe1)

all::(a>Bool)>[a]>Bool

Algunocumple(falsoparalistavaca)

any(bloqueDe1)

any::(a>Bool)>[a]>Bool

Mapearyluegoaplanar

flatMap(bloqueDe1)

concatMap::(a>[b])>[a]>[b]

Reducir/plegaraizquierda

fold(semilla,
foldl::(a>b>a)>a>[b]>a
bloqueDeSemillaYElem)foldl1::(a>a>a)>[a]>a

Reducir/plegaraderecha

NA

foldr::(b>a>a)>a>[b]>a
foldr1::(a>a>a)>[a]>a

Primerelemento

head()ofirst()
(sloLista,noSet)

head::[a]>a

ltimoelemento

NA

last::[a]>a

Cola

NA

tail::[a]>[a]

Segmentoinicial(lalistasinelltimo)

NA

init::[a]>[a]

Apareodelistas

NA

zip::[a]>[b]>[(a,b)]
zipWith::
(a>b>c)>[a]>[b]>[c]

Buscarelprimerelementoquecumpla
unacondicin

find(bloqueDe1)
find::(a>Bool)>[a]>a
findOrElse(bloqueDe1, (**)(***)
bloqueSinParametros)

Cantidaddeelementosquecumplen
unacondicin

count(bloqueDe1)

NA

Listaordenada

sortedBy(bloqueDe2)

sort::[a]>a(**)(***)

Buscarelmximoomnimosegn
criterio.

max(bloqueDe1)
min(bloqueDe1)

GuadeLenguajesv2.1Pgina3de4


(elbloquedebe
retornarunnmero)
Sinrepetidos

NA

asSet()

Mensajes de colecciones con efecto (slo Wollok)


Agrega
unObjeto
a
unaCol.

Paralaslistasseagreganal
final.

unaCol
.
add(
unObjeto)

Agregatodosloselementosde
otraCol
a
unaCol.P
aralas
listasseagreganalfinal.

unaCol
.
addAll(
otraCol
)

Ejecuta
unBloque
conefectocolateralparacadaelemento
de
unaCol.

unaCol
.
forEach(
unBloque
)

Elimina
unObjeto
de
unaCol.

unaCol
.
remove(
unObjeto
)

Eliminatodosloselementosde
unaCol
.

unaCol.
clear()

Utiliza
unBloque
,querecibedosparmetrosayby
devuelveunbooleano,parareordenarlalista.Unelemento
delalistaaseranteriorabsielbloqueseevalaa
verdadero.

unaLista.
sortBy(
unBloque
)

Funciones de Haskell
Operaciones sobre funciones
Aplicaunafuncinconunvalor(conmenor
precedenciaquelaaplicacinnormal)

($)::(a>b)>a>b

Componedosfunciones

(.)::(b>c)>(a>b)>(a>c)

Inviertelaaplicacindelosparmetrosdeuna flip::(a>b>c)>b>a>c
funcin

Unfolds (generacin de listas a partir de una semilla)


Generaunalistaquerepiteinfinitamenteal
elementodado

repeat::a>[a]

Paraiteratefx,generalalistainfinita[x,f iterate::(a>a)>a>[a]
x,f(fx),...]
Generaunalistaquerepiteunaciertacantidad replicate::Int>a>[a]
devecesalelementodado
Paracyclexs,generalalistainfinitaxs++xs cycle::[a]>[a]
++xs++...

Otros Predicados Importantes de Prolog


Paratodo

forall(Antecedente,Consecuente)

Armarunalistaapartirdeunaconsulta

findall(Formato,Consulta,Lista)

GuadeLenguajesv2.1Pgina4de4

Das könnte Ihnen auch gefallen