Está en la página 1de 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


{- un comentario /* Un comentario
multilnea -} multilnea */

Valores Literales
Smalltalk Haskell Prolog

Strings uNa CadEna uNa CadEna NA

Caracteres $a a NA

Smbolos/tomos #unSimbolo NA unSimbolo

Booleanos true false True False NA

Array/Lista {1. 2. 3} [1, 2, 3] [1, 2, 3]


{1. $a. hola} [1, unSimbolo, [ ] ]

Tuplas NA (1, True, [1, 2]) NA

Data/Functores NA Constructor 1 True nombreFunctor(1, unSimbolo)

Bloques/Funciones [ :param1 :param2 | \param1 param2 -> cuerpo NA


Annimas cuerpo ]

Operadores lgicos y matemticos


Smalltalk Haskell Prolog

Equivalencia = == NA

Identidad == NA NA

~Equivalencia ~= /= \=

~Identidad ~~ NA NA

Comparacindeorden > >= < <= > >= < <= > >= < =<

Disyuncin(Olgico) | (ansiosa) || NA
or: (perezosa)

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: base ^ exponente base ** exponente


exponente

Razcuadrada unNro sqrt sqrt unNro sqrt(Nro)


Mximomnimoentredos unNro max: otroNro max unNro otroNro NA


nmeros unNro min: otroNro min unNro otroNro

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


Smalltalk Haskell(funciones) Prolog
(mensajes) (predicados)

Longitud size length :: [a] -> Int length/2


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

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 max maximum max/3


conjuntodenmeros min minimum min/3

Buscarelmximoomnimo detectMax: maximumBy :: (a -> a -> Bool) -> [a] -> NA


detectMin: a
segncondicinbooleana
minimumBy (**) (***)

Sumatoriadeunconjuntode sum sum sumlist/2


nmeros

GuadeLenguajesv2.0Pgina2de6

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


Smalltalk Haskell

Sumatoriadeunconjuntodeelementos sum: NA
segnunatransformacin

Primerosnelementosdeunconjunto first: take

Cantidaddeocurrencias ocurrencesOf: NA

Filtrar select: filter

Rechazar(filtrarlosquenocumplenla reject: NA
condicion)

Mapear collect: map

Aplanarcoleccindecolecciones/lista flatten concat


delistas

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 allSatisfy: all


vaca)

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 detect: find :: (a -> Bool) -> [a] -> a


unacondicin detect: ifNone: (**) (***)

Posicinenlaqueseencuentrala NA
indexOf: (*)
primeraocurrenciadeunelemento

beginsWith: (*) isPreffixOf (**)


Sicomienza/terminacon
endsWith: (*) isSuffixOf (**)

Sublistaentredosposiciones copyFrom: to: (*) NA

Cantidaddeelementosquecumplenuna
count: NA
condicin

GuadeLenguajesv2.0Pgina3de6

Patrones
Haskell Prolog

Listas [] []
(cabeza:cola) [Cabeza|Cola]
(cabeza:segundo: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 ] EjecutaunasSentenciasuotrasSentenciasdependiendodelvalorde


ifFalse: [otrasSentencias ] verdaddeunBool.

[unBool ] whileTrue: [sentencias] EjecutaiterativamentelassentenciasmientrasunBoolseaverdadero.


unNro timesRepeat: [sentencias] EjecutaiterativamentelassentenciasexactamenteunNrodeveces.


unNro to: otroNro Ejecutaiterativamentelassentenciaslacantidaddevecescomprendida


do: [:indice | sentencias ] 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
DevuelveelvalorasociadoaunaClave,nilsiunaClaveno
unaColat:unaClave
tieneasociadoningnvalor.

unaColat:unaClaveput:unObjeto ColocaunObjetocomovalorasociadoaunaClave.

Mensajes de conversin de colecciones (devuelven nuevas colecciones)


unaColasBag
unaColasSet Devuelveunanuevacoleccindelaclaseindicadacon
unaColasOrderedCollection todosloselementosdeunaCol.
unaColasArray

Devuelveunanuevacoleccincontodosloselementosde
unaColordenadossegnunaCondicion.unaCondiciones
unaColasSortedCollection:[:anterior:siguiente|
unaexpresindevalorbooleanoenlaqueintervienen
unaCondicion]
anteriorysiguiente.anteriorquedardelantedesiguiente
cuandounaCondicionseaverdadera.

GuadeLenguajesv2.0Pgina5de6

Mensajes de colecciones con efecto (efecto colateral)


AgregaunObjetoaunaCol.Paralascoleccionescon
unaColadd:unObjeto
subndiceseagreganalfinal.DevuelveunObjeto

AgregatodosloselementosdeotraColaunaCol.Paralas
unaColaddAll:otraCol coleccionesconsubndiceseagreganalfinal.Devuelve
otraCol

EjecutaunBloqueconefectocolateralparacadaelemento
unaColdo:unBloque
deunaCol.

RemuevedeunaCollosunElemquehaganverdaderaa
unaColremoveAllSuchThat:[:unElem|unaExpr]
unaExpr.DevuelveesamismaunaColmodificada.

unaColremove:unObjeto EliminaunObjetodeunaCol.DevuelveunObjeto.

unaColremoveAll EliminatodosloselementosdeunaCol.DevuelveunaCol.

ColocaunObjetoenlaposicionunNrodeunaCol.
unaColat:unNroput:unObjeto(*)
InvlidoparaSortedCollection.

GuadeLenguajesv2.0Pgina6de6

También podría gustarte