Claudio Cesar de Sá
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:
Editar ProgramaUsuário.
(Editor “aberto”no desenvolvimento)
Executar, testar funções, etc
Carrega
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.hsType :? for helpPrelude>
Claudio Cesar de Sá
% hugs
__ __ __ __ ____ ___ _________________________________________|| || || || || || ||__ Hugs 98: Based on the Haskell 98 standard||___|| ||__|| ||__|| __|| Copyright (c) 1994-1999||---|| ___|| World Wide Web: http://haskell.org/hugs|| || Report bugs to: [email protected]|| || Version: February 2000 _________________________________________
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.hsType :? for help
Prelude>
No Linux ou Unix o % é o prompt, simplesmente digite hugs:
Claudio Cesar de Sá
Prelude> :?LIST OF COMMANDS: Any command may be abbreviated to :c wherec 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:quit exit Hugs interpreterPrelude>
Claudio Cesar de Sá
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 carrega o script name:r regarrega o script atual:e name edita o script name:e edita o current script:t expr mostra o tipo de expr:? Mostra todods os comandos:q 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:
Obrigado !