1.2.2 TIPOS DE DATOS

Tipos de datos en programacion funcional

En lenguaje funcional el uso de los datos debe ser selectivo y se debe tener cuidado al momento de hacer uso de un tipo en especifico de dato para retornar algun otro, por naturaleza del lenguaje es imposible hacerlo directamente ya que una vez iniciado un procedimiento no se pueden incluir tipos de datos diferente a la entrada, para poder hacer eso se deben hacer especificaciones en la declaracion de la funcon como por ejemplo:

       <Haskell>

        Funcion :: Int -> String
        Funcion x = <parametros de la funcion>

donde "x" representa la entrada de datos que habra al nomas ser solo la x solo recibira un parametro,
en este caso se esta creando una funcion que va a recibir un entero y va a retornar una cadena, otro ejemplo de funciones que requieren mas trabajo la especificacion de tipos se hace de la siguiente manera:

        <Haskell>

         Funcion :: [a]->Int->Bool
         Funcion x = <parametros de la funcion>

En el ejemplo anterior se esta declarando una fucnion que recibira una lista, luego manejara enteros y retornara un booleano.

Los tipos de datos que puede recibir haskell son
Int
String
Bool
Char
[a] (lista)
[Int] (lista enteros)
Float
Double

Para crear un tipo de dato personalizado se utiliza la expresion type <nombre> = (<contenido>)
por ejemplo podemos crear un tipo nombre de la siguiente manera:
     type nombre = String

o un tipo numero de telefono
     type numero = Int

o un dato mas complejo como una tupla
    type contacto = (String,Int)
    o
    type contacto = (nombre,numero)

Lista:
Una lista es un conjunto de datos indefinido, que almacena solo un tipo de dato, algo similar a los arreglos con la limitande a un solo tipo de dato Ejemplo:

          [10,20,30,40] <- Lista Int
          ['a','b','c','d']         <- Lista String

Si tratamos de hacer una mezcla tal como [10,20,30,a,b,c] seria incorrecto y arrojaria error debido a que se esstan integrando enteros y caracteres en la lista cuando deberian ser solo enteros o solo cadenas

creacion de listas en haskell:
en haskell  para crear una lista se utiliza el comando let <nombre_lista> =  [<Valores>]
Ejemplo:
         Let lista1 = [1,2,3,4,5,6,7,8,9]
         Let lista2 = ['a','b','c']
una vez creadas es solo cuestion de teclear en el prompt de haskell en nombre de la lista para que muestre sus contenidos


Las listas pueden ser manipuladas de distintas formas como por ejemplo si usamos la palabra reservada head nos muestra el primer valor dentro de la lista:
       head lista1
       head lista2



Otros comandos que hay para el uso de las listas son tail, init ,last.
tail muestra todos los elementos menos el primero, init muestra todos los elementos menos el ultimo y last muestra solo el ultimo elemento, se tiene tambien otra funcion de uso en listas que

todos estos comandos pueden ser utilizados en combinacion para poder desarrollar ciertas operaciones con las listas como sumarlas, mezclarlas o recorrer valores dentro de la lista

Tupla:

Las tuplas en haskell a diferencia de las listas estas pueden tener multiples tipos de valores dentro
por ejemplo:
    let tupla = (1,a,3.5)

Las tuplas pueden tener un gran uso dentro de programacion funcional ya que se pueden conjuntar multiples datos en una tupla y luego asignar esa tupla como un tipo de dato

En lenguajes de tipo funcional se pueden crear tipos de datos personalizados, los cuales, son declarados como algun tipo de dato ya existente (para un uso mas sencillo al momento de declarar en un programa o mas entendible) o un conjunto de datos

Tipos de datos

Un tipo de datos es la propiedad de un valor que determina su dominio (qué valores puede tomar), qué operaciones se le pueden aplicar y cómo es representado internamente por el computador.
Todos los valores que aparecen en un programa tienen un tipo.
A continuación revisaremos los tipos de datos elementales de Python. Además de éstos, existen muchos otros, y más adelante aprenderemos a crear nuestros propios tipos de datos.

Números enteros

El tipo int (del inglés integer, que significa «entero») permite representar números enteros.
Los valores que puede tomar un int son todos los números enteros: ... -3-2-10123, ...
Los números enteros literales se escriben con un signo opcional seguido por una secuencia de dígitos:
1570
+4591
-12

Números reales

El tipo float permite representar números reales.
El nombre float viene del término punto flotante, que es la manera en que el computador representa internamente los números reales.
Hay que tener mucho cuidado, porque los números reales no se pueden representar de manera exacta en un computador. Por ejemplo, el número decimal 0.7 es representado internamente por el computador mediante la aproximación 0.69999999999999996. Todas las operaciones entre valores float son aproximaciones. Esto puede conducir a resultados algo sorpresivos:
>>> 1/7 + 1/7 + 1/7 + 1/7 + 1/7 + 1/7 + 1/7
0.9999999999999998
Los números reales literales se escriben separando la parte entera de la decimal con un punto. Las partes entera y decimal pueden ser omitidas si alguna de ellas es cero:
>>> 881.9843000
881.9843
>>> -3.14159
-3.14159
>>> 1024.
1024.0
>>> .22
0.22
Otra representación es la notación científica, en la que se escribe un factor y una potencia de diez separados por una letra e. Por ejemplo:
>>> -2.45E4
-24500.0
>>> 7e-2
0.07
>>> 6.02e23
6.02e+23
>>> 9.1094E-31
9.1094e-31
Los dos últimos valores del ejemplo son iguales, respectivamente, a 6.02×1023 (la constante de Avogadro) y 9.1094×1031 (la masa del electrón).

Números complejos

El tipo complex permite representar números complejos.
Los números complejos tienen una parte real y una imaginaria. La parte imaginaria es denotada agregando una j inmediatamente después de su valor:
3 + 9j
-1.4 + 2.7j

Valores lógicos

Los valores lógicos True y False (verdadero y falso) son de tipo bool, que representa valores lógicos.
El nombre bool viene del matemático George Boole, quien creó un sistema algebraico para la lógica binaria. Por lo mismo, a True y False también se les llama valores booleanos. El nombre no es muy intuitivo, pero es el que se usa en informática, así que hay que conocerlo.

Texto

A los valores que representan texto se les llama strings, y tienen el tipo str.
Los strings literales pueden ser representados con texto entre comillas simples o comillas dobles:
"ejemplo 1"
'ejemplo 2'
La ventaja de tener dos tipos de comillas es que se puede usar uno de ellos cuando el otro aparece como parte del texto:
"Let's go!"
'Ella dijo "hola"'
Es importante entender que los strings no son lo mismo que los valores que en él pueden estar representados:
>>> 5 == '5'
False
>>> True == 'True'
False
Los strings que difieren en mayúsculas y minúsculas, o en espacios también son distintos:
>>> 'mesa' == 'Mesa'
False
>>> ' mesa' == 'mesa '
False

Nulo

Existe un valor llamado None (en inglés, «ninguno») que es utilizado para representar casos en que ningún valor es válido, o para indicar que una variable todavía no tiene un valor que tenga sentido.
El valor None tiene su propio tipo, llamado NoneType, que es diferente al de todos los demás valores.

Comentarios

Entradas más populares de este blog

1.2.3 Diciplina tipos

1.2.4 Funciones