Ambiente Hugs 98 Haskell Users Gofer System Uma
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. s e/~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, lpg 3 (integral), copiar o software hugs 98 -Dec 2001. msi (1. 6 M) 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 Hugs 98 • 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: hugs-bugs@haskell. org || || Version: December 2001 ________________________ Haskell 98 mode: Restart with command line option -98 to enable extensions Reading file "C: ARQUIVOS DE PROGRAMASHUGS 98libPrelude. hs": Hugs session for: C: ARQUIVOS DE PROGRAMASHUGS 98libPrelude. 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: hugs-bugs@haskell. org _____________________ 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 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\Ex 1_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 : 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\Ex 1_claudio. hs” ativa o editor de programa (: edit. . . ) • : l "C: \Arquivos\demos\Ex 1_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: claudio@joinville. udesc. br claudio@aceadm. com. br Obrigado ! Claudio Cesar de Sá
- Slides: 18