Académique Documents
Professionnel Documents
Culture Documents
Linguagens de Programação
Miranda
Betim – MG
2010
Luiz Henrique Diniz Sousa
Linguagens de Programação
Miranda
Betim - MG
2010
2
MIRANDA
3
Sumário
Introdução ........................................................................................................ 5
História ............................................................................................................. 6
Paradigma ........................................................................................................ 7
Utilização .......................................................................................................... 8
Sintaxe ............................................................................................................. 9
Especificação ................................................................................................. 11
Implementação ............................................................................................... 12
Ambiente de Desenvolvimento ....................................................................... 13
Exemplos........................................................................................................ 14
Vantagens e Desvantagens ........................................................................... 15
Conclusões ..................................................................................................... 16
Referência ...................................................................................................... 17
4
Introdução
5
História
Miranda foi criada para ser uma linguagem funcional mais atraente para o
mercado e para o meio acadêmico, oferecendo conceitos antes não disponíveis em
linguagens funcionais como abstração e polimorfismo. Criada pelo Professor Inglês
David Turner, Miranda é uma evolução das SASL e KCR (também desenvolvidas pelo
Prof. David) usando alguns conceitos de Hope e ML. O projeto de Miranda foi
desenvolvido no laboratório da Universidade de Kent na Inglaterra entre 1985 e 1986,
mas está atualmente sob o domínio da empresa Researcher Software LTD. que se
tornou dona na marca “Miranda”. Miranda pode ser utilizada em uma grande gama de
aplicações, mas suas principais são: prototipação rápida, ensino de linguagens
funcionais, como linguagem de especificação, e pesquisa sobre o paradigma funcional.
6
Paradigma de programação
7
Utilização
8
Sintaxe
z = sq x / sq y
sq n = n * n
x=a+b
y=a–b
a = 10
b=5
Nota-se, a partir do script acima, que não há declaração dos tipos, bem como
não há ponto e vírgula no fim das definições. A notação para a aplicação de funções é
caracterizada apenas pela justaposição do nome da função e os parâmetros a serem
passados, como ocorre em "sq x" e "sq y", por exemplo, na primeira linha. Na definição
das funções o parâmetro possui apenas um escopo local, sendo usado apenas na
própria definição, como em "sq n = n * n", enquanto que os demais nomes possuem o
script inteiro como escopo.
9
Por exemplo:
Existe também uma notação usando "..", para listas de elementos em uma
progressão aritmética. Por exemplo, eis as definições de uma função de fatorial e de um
número "resultado", que é a soma de todos os números ímpares entre 0 e 100:
Os elementos de uma lista devem ser do mesmo tipo. É escrita entre parênteses,
como no exemplo a seguir:
10
Especificação
1 - Livro que dá uma boa explicação sobre linguagens funcionais e utiliza Miranda como
exemplo:
http://www.amazon.com/Miranda-Functional-Programming-International-
Computer/dp/0201422794/ref=sr_1_1/002-4634342-
4198420?ie=UTF8&s=books&qid=1180378586&sr=1-1
2 - Livro sobre miranda com estilo de tutorial. Livro escrito baseado na experiência de
professores utilizando miranda na universidade:
http://www.amazon.com/Programming-Miranda-Chris-
Clack/dp/013192592X/ref=sr_1_2/002-4634342-
4198420?ie=UTF8&s=books&qid=1180378586&sr=1-2
http://www.cs.kent.ac.uk/people/staff/dat/miranda/ieOverview.html
5 - Site oficial da linguagem. Possui bons materiais como papers e livros sobre a
linguagem:
http://www.miranda.org.uk/
11
Implementação
12
Ambiente de Desenvolvimento
z = sq x / sq y
sq n = n * n
x=a+b
y=a-b
a = 10
b=5
13
Exemplos de Programas
Direto no Console: 3)
10^10 4)
[1..100]
divInt a b = if b == 0 then a else div a b
[2,4..100]
resto a b = if b /= 0 then a `mod` b else 0
[1..]
soma x y = (+) x y
Através de Scripts
1) vogal a = if a=='a' || a=='e' || a=='i' || a=='o' ||
a=='u'
z = sq x / sq y then True
sq n = n * n else False
x=a+b
y=a-b
a = 10 5)
b=5
Ao solicitar o valor de “z”, o retorno será “9”
comprimento l=length l
2)
vazia []= True
dias_uteis_da_semana = ["seg", "ter", "qua", vazia _ = False
"qui", "sex"]
primeiro :: [Int] -> Int
dias_da_semana = dias_uteis_da_semana primeiro lista = head lista
++ ["sab", "dom"]
junta :: [Int] -> [Int] -> [Int]
junta lista1 lista2 = lista1 ++ lista2
6)
vezes2 n = n * 2
7)
14
Vantagens e Desvantagens
15
Conclusões
16
Referências
<http://www.portugal-a-programar.org/forum/index.php?topic=4614.0>. Disponível
em: 31/10/2010
17