claudio cesar de sá ambiente hugs’98 (haskell user's gofer system) uma panorâmica
TRANSCRIPT
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 !