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á