Ambiente Hugs’98
(Haskell User's Gofer System)
Uma panorâmica
Claudio Cesar de Sá
Antes um dos precursores ....
• Este é o John Hughes
• http://www.cs.chalmers.se
/~rjmh/
• Tem várias dicas e artigos
sobre ling. funcionais...
• Os melhores resultados da
linguagem
• Temos os “porquês”?...
• Sim: www.haskell.org
Claudio Cesar de Sá
Quanto ao Laboratório:
• Em um navegador: \\200.19.107.36 (34) (IP do servidor)
• Login e senha e : alunos e alunos (dcc)
• Na pasta disciplinas, lpg3 (integral), copiar o software
hugs98-Dec2001.msi (1.6M) para o micro do lab
• Ou copiar do site:
http://cvs.haskell.org/Hugs/pages/downloading.htm
• Copie os arquivos em *.html, onde contém parte da
sintaxe de haskell, são arquivos de ajuda
• Instalar. Em caso de problemas, chamar o João
(bolsista)
• Última versão: Novembro/2002
Claudio Cesar de Sá
Ciclo do Programa no Laboratório:
Carrega
Editar Programa
Usuário.
(Editor “aberto”
no desenvolvimento)
Executar, testar
funções, etc
Modificar
Claudio Cesar de Sá
Feita a instalação, veja o ciclo:
• Escolher um editor ASCII,
tipo edit.com, ultra-edit (o
melhor)
• Editar o programa
• Salvar, com qualquer
extensão
• Entrar no Hugs98
• Carregar o programa
• Testar
• Volte ao passo ....
• Dúvidas: consulte os
arquivos de ajuda (*.html)
Claudio Cesar de Sá
Um Editor Haskell: JCreator
• Este editor para linguagem Haskell, tem
avaliação estática, e principalmente com
sintaxe em “highlitenings” (colorida quanto
keywords, funções, operadores, etc)
• http://www.students.cs.uu.nl/people/rjchaaft
/JCreator/
• Para intalar, siga o Readme.txt do site acima
Claudio Cesar de Sá
JCreator LE
• Basicamente: é um editor “freeware” para
Java, contudo há duas macros para
reconhecer a sintaxe do Haskell
(LHaskell.syn e Haskell.syn), que são
copiadas para o diretório de Syntax
• http:// www.jcreator.com
• http://www.students.cs.uu.nl/people/rjchaaft
/JCreator/
Claudio Cesar de Sá
Quanto ao Winhugs?
• É apenas uma “casca” de janela para o Hugs
original: algo que facilita muito;
• É preciso um editor externo como visto
Claudio Cesar de Sá
__ __ __ __ ____ ___
_______________________________________________
|| || || || || || ||__ Hugs 98: Based on the Haskell 98 standard
||___|| ||__|| ||__|| __|| Copyright (c) 1994-2001
||---||
___||
World Wide Web: http://haskell.org/hugs
|| ||
Report bugs to: [email protected]
|| || Version: December 2001
_______________________________________________
Haskell 98 mode: Restart with command line option -98 to enable extensions
Reading file "C:\ARQUIVOS DE PROGRAMAS\HUGS98\lib\Prelude.hs":
Hugs session for:
C:\ARQUIVOS DE PROGRAMAS\HUGS98\lib\Prelude.hs
Type :? for help
Prelude>
Claudio Cesar de Sá
No Linux ou Unix o % é o prompt, simplesmente
digite hugs:
% hugs
__
__
||
||
||___||
||---||
||
||
||
||
__ __ ____
___
|| || || || ||__
||__|| ||__|| __||
___||
Version: February 2000
_________________________________________
Hugs 98: Based on the Haskell 98 standard
Copyright (c) 1994-1999
World Wide Web: http://haskell.org/hugs
Report bugs to: [email protected]
_________________________________________
Haskell 98 mode: Restart with command line option -98 to enable extensions
Reading file "/usr/local/share/hugs/lib/Prelude.hs":
Hugs session for:
/usr/local/share/hugs/lib/Prelude.hs
Type :? for help
Prelude>
Claudio Cesar de Sá
Prelude> :?
LIST OF COMMANDS: Any command may be abbreviated to :c where
c is the first character in the full name.
:load <filenames> load modules from specified files
:load
clear all files except prelude
:also <filenames> read additional modules
:reload
repeat last load command
:project <filename> use project file
:edit <filename> edit file
:edit
edit last module
:module <module> set module for evaluating expressions
<expr>
evaluate expression
:type <expr>
print type of expression
:?
display this list of commands
:set <options>
set command line options
:set
help on command line options
:names [pat]
list names currently in scope
:info <names>
describe named objects
:browse <modules> browse names defined in <modules>
:find <name>
edit module containing definition of name
:!command
shell escape
:cd dir
change directory
:gc
force garbage collection
:version
print Hugs version
Claudio Cesar de Sá
:quit
exit Hugs interpreter
Prelude>
Dos passos citados... e que está sob o formato
de ícones no winhugs:
• :l "C:\\Arquivos\\demos\\Ex1_claudio.hs”
(carrega o programa)
• :l
(limpa o buffer do hugs, deixando
apenas as funções do prelúdio)
• :quit
(sai do winhugs)
Claudio Cesar de Sá
Os comandos que interessam:
Comando
Significado
:l name
:r
:e name
:e
:t expr
:?
:q
carrega o script name
regarrega o script atual
edita o script name
edita o current script
mostra o tipo de expr
Mostra todods os comandos
quit/sair
Claudio Cesar de Sá
Com tantos comandos e manuais:
• Antes de tudo... Ir para o botão Options, e
fazer algumas configurações básicas como:
– Acertar caminho de onde estão seus programas
– Escolha um editor de texto simples, que indique
o número da linha corrente do código fonte, etc.
– Use o editor mais simples: “edit.com” ou
instale algum outro “free” da WEB
– O indicador das linhas de códigos é importante
neste momento
Claudio Cesar de Sá
Dicas:
•
:e "C:\\Arquivos\\demos\\Ex1_claudio.hs” ativa o editor
de programa (:edit ...)
• :l "C:\\Arquivos\\demos\\Ex1_claudio.hs” carrega o
arquivo editado (:load ...)
• Use Crlf+Ins para marcar o comando e Shift+Ins para colar
• Use as “flechinhas” para repetir comandos já realizados
Claudio Cesar de Sá
Dicas:
• Quando o óbvio deveria de funcionar, e não
funciona, faça o seguinte procedimento:
– Faça um “clear all”, tecle simplesmente “:l” no
prompt do hugs
– Carregue novamente o programa que tinha o
erro inexplicado
Claudio Cesar de Sá
Dicas:
• Inicialmente, faça funções sem considerar o
tipo das funções: Haskell vai advinhar !
• Caso queiras descobrir o que Haskell
deduziu sobre os tipos:
– Digite: :type nome_da_função
– O resultado, podes usar no seu programa
– Tipagem será explicado posteriormente
Claudio Cesar de Sá
Quem puder dar mais dicas sobre,
Hugs’98 e Haskell:
[email protected]
[email protected]
Obrigado !
Claudio Cesar de Sá
Download

Visualizar - GEOCITIES.ws