Sei sulla pagina 1di 6

Gua de lenguajes

Aclaraciones

(*)Significaqueslofuncionaparacoleccionesconndice(Smalltalk)
(**)SignificaqueestdeclaradaenData.List(Haskell)
(***)Significaqueeltipopresentadoacesunaversinsimplificadadeltiporeal(Haskell)
NAsignificaNoAplica.Enotraspalabras,noexistenoserecomiendasuuso.

Elementos Comunes
Comentarios
Smalltalk

Haskell

Prolog

un comentario

-- un comentario
{- un comentario
multilnea -}

% un comentario
/* Un comentario
multilnea */

Valores Literales

Smalltalk

Haskell

Prolog

Strings

uNa CadEna

uNa CadEna

NA

Caracteres

$a

NA

Smbolos/tomos

#unSimbolo

NA

unSimbolo

Booleanos

true false

True False

NA

Array/Lista

{1. 2. 3}
{1. $a. hola}

[1, 2, 3]

[1, 2, 3]
[1, unSimbolo, [ ] ]

Tuplas

NA

(1, True, [1, 2])

NA

Data/Functores

NA

Constructor 1 True

nombreFunctor(1, unSimbolo)

Bloques/Funciones
Annimas

[ :param1 :param2 |
cuerpo ]

\param1 param2 -> cuerpo NA

Operadores lgicos y matemticos

Smalltalk

Haskell

Prolog

Equivalencia

==

NA

Identidad

==

NA

NA

~Equivalencia

~=

/=

\=

~Identidad

~~

NA

NA

Comparacindeorden

> >= < <=

> >= < <=

> >= < =<

Disyuncin(Olgico)

| (ansiosa)
or: (perezosa)

||

NA

Conjuncin(Ylgico)

& (ansiosa)
and: (perezosa)

&&

Negacin

unBool not

not unBool

not( Consulta )

GuadeLenguajesv2.0Pgina1de6

Operadores matemticos

Smalltalk

Haskell

Prolog(slocomoparte
deunis)

Operadoresaritmticos
comunes

+-*/

+-*/

+-*/

Divisinentera

dividendo // divisor

div dividendo divisor

dividendo // divisor

Resto

dividendo \\ divisor

mod dividendo divisor

dividendo mod divisor

Valorabsoluto

unNro abs

abs unNro

abs(Nro)

Exponenciacin

base raisedTo:
exponente

base ^ exponente

base ** exponente

Razcuadrada

unNro sqrt

sqrt unNro

sqrt(Nro)

Mximomnimoentredos
nmeros

unNro max: otroNro


unNro min: otroNro

max unNro otroNro


min unNro otroNro

NA

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

Smalltalk
(mensajes)

Haskell(funciones)

Prolog
(predicados)

Longitud

size

length :: [a] -> Int


genericLength :: Num n => [a] -> n

length/2

Concatenacin

, (*)

++

append/3

Unineinterseccin

union:

union (**)

union/3

Interseccin

intersection: intersect (**)

intersection
/3

Accesoporndicebase0

NA

unaLista !! unNro

nth0/3

Accesoporndicebase1

at: (*)

NA

nth1/3

Pertenencia

includes:

elem

member/2

Mximomnimodeun
conjuntodenmeros

max
min

maximum
minimum

max/3
min/3

Buscarelmximoomnimo
segncondicinbooleana

detectMax:
detectMin:

maximumBy :: (a -> a -> Bool) -> [a] ->


a
minimumBy (**) (***)

NA

Sumatoriadeunconjuntode
nmeros

sum

sum

sumlist/2

GuadeLenguajesv2.0Pgina2de6

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

Smalltalk

Haskell

Sumatoriadeunconjuntodeelementos
segnunatransformacin

sum:

NA

Primerosnelementosdeunconjunto

first:

take

Cantidaddeocurrencias

ocurrencesOf:

NA

Filtrar

select:

filter

Rechazar(filtrarlosquenocumplenla
condicion)

reject:

NA

Mapear

collect:

map

Aplanarcoleccindecolecciones/lista
delistas

flatten

concat

Aplanarymapear

gather:

concatMap

Reducir/plegaraizquierda

inject: into:

foldl :: (a -> b -> a) -> a -> [b] -> a


foldl1 :: (a -> a -> a) -> [a] -> a

Reducir/plegaraderecha

NA

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


foldr1 :: (a -> a -> a) -> [a] -> a

Todoscumplen(verdaderoparalista
vaca)

allSatisfy:

all

Algunocumple(falsoparalistavaca)

anySatisfy

any

Primerelemento

first

head

ltimoelemento

last

last

Cola

allButFirst

tail

Segmentoinicial(todosmenoselltimo)

allButLast

init

Apareodelistas

NA

zip :: [a] -> [b] -> [(a, b)]


zipWith ::
(a -> b -> c) -> [a] -> [b] -> [c]

Buscarelprimerelementoquecumpla
unacondicin

detect:
detect: ifNone:

find :: (a -> Bool) -> [a] -> a


(**) (***)

Posicinenlaqueseencuentrala
primeraocurrenciadeunelemento

indexOf: (*)

Sicomienza/terminacon

beginsWith: (*)
endsWith: (*)

isPreffixOf (**)
isSuffixOf (**)

Sublistaentredosposiciones

copyFrom: to: (*)

NA

Cantidaddeelementosquecumplenuna
count:
condicin

NA

NA

GuadeLenguajesv2.0Pgina3de6

Patrones

Haskell

Prolog

Listas

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

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

Tuplas

(componente1, componente2)

NA

Data/Functores

Constructor componente1 componente2 nombreFunctor(componente1,componente2)

Variableannima

Funciones de Haskell
Operaciones sobre funciones
($) :: (a -> b) -> a -> b

Aplica una funcin con un valor

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

Compone dos funciones

flip :: (a -> b -> c) -> b -> a -> c

Invierte la aplicacin de los parmetros de una


funcin

Unfolds (generacin de listas a partir de una semilla)


repeat :: a -> [a]

Genera una lista que repite infinitamente al


elemento dado

iterate :: (a -> a) -> a -> [a]

Para iterate f x, genera la lista infinita [x, f


x, f (f x), ...]

replicate :: Int -> a -> [a]

Genera una lista que repite una cierta cantidad


de veces al elemento dado

cycle :: [a] -> [a]

Para cycle xs, genera la lista infinita xs ++ xs


++ xs ++ ...

Predicados de Prolog
Predicados fundamentales de orden superior
not(Consulta)
findall(Formato,Consulta,Lista)
forall(Antecedente,Consecuente)

GuadeLenguajesv2.0Pgina4de6

Mensajes de Smalltalk
Control de flujo imperativo
unBool ifTrue: [unasSentencias ]

EjecutaunasSentenciasdependiendodelvalordeverdaddeunBool.

unBool ifTrue: [unasSentencias ]


ifFalse: [otrasSentencias ]

EjecutaunasSentenciasuotrasSentenciasdependiendodelvalorde
verdaddeunBool.

[unBool ] whileTrue: [sentencias]

EjecutaiterativamentelassentenciasmientrasunBoolseaverdadero.

unNro timesRepeat: [sentencias]

EjecutaiterativamentelassentenciasexactamenteunNrodeveces.

unNro to: otroNro


do: [:indice | sentencias ]

Ejecutaiterativamentelassentenciaslacantidaddevecescomprendida
entreunNroyotroNro.Indicevaraencadaiteracin,desdeunNrohasta
otroNro.

Tipos de Colecciones

Sinorden:
Bag:Tamaovariable,sinsubndice.
Set:Tamaovariable,sinsubndice,nopermiterepetidos.
Conorden:
Array:Tamaofijo,consubndice,ordendeacuerdoalsubndice.EnestesentidounStringsecomporta
comounArray
OrderedCollection:Tamaovariable,consubndice,ordendeacuerdoalsubndice.
SortedCollection:Tamaovariable,consubndice,ordendeacuerdoacriterioqueseespecifica.
Lascoleccionesconordenrespetanelordendeloselementosendo:/select:/collect:/etc..
Dictionary:Tamaovariable,accesoporclave,nopermiteclavesrepetidas
do:/select:/collect:/etc.funcionansobrelosvaloresincluidos,nosetienenencuentalasclaves.

Mensajes de diccionarios
unaColat:unaClave

DevuelveelvalorasociadoaunaClave,nilsiunaClaveno
tieneasociadoningnvalor.

unaColat:unaClaveput:unObjeto

ColocaunObjetocomovalorasociadoaunaClave.

Mensajes de conversin de colecciones (devuelven nuevas colecciones)


unaColasBag
unaColasSet
unaColasOrderedCollection
unaColasArray

unaColasSortedCollection:[:anterior:siguiente|
unaCondicion]

Devuelveunanuevacoleccindelaclaseindicadacon
todosloselementosdeunaCol.

Devuelveunanuevacoleccincontodosloselementosde
unaColordenadossegnunaCondicion.unaCondiciones
unaexpresindevalorbooleanoenlaqueintervienen
anteriorysiguiente.anteriorquedardelantedesiguiente
cuandounaCondicionseaverdadera.

GuadeLenguajesv2.0Pgina5de6

Mensajes de colecciones con efecto (efecto colateral)


unaColadd:unObjeto

AgregaunObjetoaunaCol.Paralascoleccionescon
subndiceseagreganalfinal.DevuelveunObjeto

unaColaddAll:otraCol

AgregatodosloselementosdeotraColaunaCol.Paralas
coleccionesconsubndiceseagreganalfinal.Devuelve
otraCol

unaColdo:unBloque

EjecutaunBloqueconefectocolateralparacadaelemento
deunaCol.

unaColremoveAllSuchThat:[:unElem|unaExpr]

RemuevedeunaCollosunElemquehaganverdaderaa
unaExpr.DevuelveesamismaunaColmodificada.

unaColremove:unObjeto

EliminaunObjetodeunaCol.DevuelveunObjeto.

unaColremoveAll

EliminatodosloselementosdeunaCol.DevuelveunaCol.

unaColat:unNroput:unObjeto(*)

ColocaunObjetoenlaposicionunNrodeunaCol.
InvlidoparaSortedCollection.

GuadeLenguajesv2.0Pgina6de6

Potrebbero piacerti anche