Quick
index
main
eev
eepitch
maths
angg
blogme
dednat6
littlelangs
PURO
(C2,C3,C4,
 λ,ES,
 GA,MD,
 Caepro,
 textos,
 Chapa 1)

emacs
lua
(la)tex
maxima
 qdraw
git
lean4
agda
forth
squeak
icon
tcl
tikz
fvwm
debian
irc
contact

Oficina de Lean4 - versão 0 - aula 2 (legendas muito incompletas)


00:00

00:01 Oi gente, eu tou gravando esse vídeo assim
00:03 meio emergencialmente pra aula 2 da
00:05 oficina de Lean, que vai ser uma aula
00:07 estranhíssima, porque muito poucas pessoas
00:09 pessoas vão conseguir estar nela no horário...

00:10 então a gente vai tentar fazer
00:12 algumas coisas desse vídeo, e parece que
00:14 algumas pessoas vão tentar fazer as coisas
00:16 dele depois. Então, lembrem que se eu
00:20 executo essa expressão daqui
00:22 no meu computador ela vai para meu
00:24 arquivo de anotações sobre Lean,
00:27 mas no computador de vocês ela tá
00:29 configurada para baixar uma cópia da
00:33 versão pública desse arquivo, não gravar
00:36 ela em lugar nenhum, e mostrar ela
00:38 num buffer temporário. O material da aula 2
00:41 tá nessa seção daqui, "oficina 0, aula 2"
00:45 e aí eu usei como referência
00:49 alguns trechos das legendas
00:52 pra lembrar exatamente o que que eu
00:54 tinha planejado para as aulas 1 e 2.

00:56 Eu ainda não gravei o vídeo do
00:58 exercício grande da aula de hoje, que é fazer
01:00 algumas demonstrações não triviais.

01:04 eu acho que vocês já viram
01:07 links que terminam com "hsubs", eles
01:09 vão pra versão em HTML das legendas
01:13 de um vídeo, e o lsubs é uma coisa que é
01:16 mais útil para mim, que vai pra fonte em
01:18 Lua dessas legendas que depois eu
01:19 converto para montão de outros formatos...

01:21 e para mim a graça disso é que isso abre
01:23 dentro do Emacs.
01:28 Então, deixa eu só lembrar para vocês que
01:32 todo esse curso é feito para pessoas com
01:34 pouquíssima memória, com um buffer mental
01:36 pequenininho que nem o meu, então eu
01:39 vou sempre mostrar como é que a gente
01:41 faz para lembrar o mínimo e reconstruir
01:43 o resto a partir do pouquinho que a
01:44 gente lembrou.

01:46 Então o primeiro bloco que a gente vai ver
01:48 hoje é o seguinte... eu preciso confirmar
01:51 que todo mundo sabe duas teclas básicas,
01:53 que eu chamo de "go to" e "go back"...
01:55 os nomes oficiais delas são mais complicados.

01:58 Então a gente vai para esse bloco daqui,
02:01 sobre go to e go back, e elas estão
02:04 mencionadas em dois trechos do vídeo
02:07 sobre a oficina - o vídeo de divulgação,
02:09 aquele de, sei lá, 30 minutos ou algo assim,
02:12 que eu fiz.

02:16 O primeiro trecho é esse,
02:19 e talvez vocês precisem ver esse trecho
02:22 de novo para lembrar como essas teclas
02:24 funcionam...

02:28 e no (find-lean4-intro), que tem as instruções
02:31 pra instalar o Lean e as instruções muito
02:33 básicas de como testar ele, a seção 3
02:36 se chama "Test the five manuals", e no
02:40 final dela tem um manual que tá num
02:42 formato muito antigo, que foi gerado com
02:44 com ferramentas que as pessoas não tão
02:48 mais usando, que é o "Lean Reference", e
02:52 algumas teclas que a gente vai usar
02:53 estão explicadas aqui, nesse link daqui, ó,
02:56 nessa URL.

02:58 Então, voltando... isso aqui
03:02 aponta para esse trechinho onde estão os
03:03 links pro Lean Reference,
03:06 e esses dois links não vão funcionar no
03:09 no computador de vocês...

03:11 a seção que nos interessa é essa
03:15 daqui, então se vocês quiserem ler a
03:17 documentação original sigam esse link
03:20 daqui, e ele vai explicar um montão de
03:21 coisas interessantes e um montão de
03:22 coisas que não nos interessam...

03:24 e se vocês avançarem alguns
03:28 parágrafos vocês vão ver que ele fala
03:30 sobre o `M-.' e o `M-,', que
03:33 são o go to e o go back. Então, deixa eu
03:37 voltar para cá...

03:39 como é que a gente faz para descobrir
03:41 o que que essas teclas fazem?

03:43 É o seguinte. Essas teclas são
03:47 teclas globais que estão
03:48 definidas em todos os modos do Emacs,
03:53 e no tutorial principal do eev, que é
03:57 esse daqui, a seção 4, ela...
04:02 peraí, deixa eu lembrar se é a seção 4...

04:10 Sim. Ela explica um jeito de gerar
04:12 muitos hiperlinks sobre uma determinada
04:15 função ou sobre uma determinada tecla.
04:17 Ela começa dizendo que se você executar
04:19 essa expressão daqui você vai pra um
04:21 buffer temporário com montão de links
04:23 sobre o find-file... mas uma coisa que é
04:26 super importante é esse link daqui.
04:26 Se você lembrar essa sequência de
04:30 teclas daqui você consegue help sobre
04:32 qualquer função, nesse formato daqui...

04:34 Então, se eu bater M-h M-f em cima
04:39 do nome dessa função, find-file, ele vai
04:41 pedir pra eu confirmar que eu quero
04:44 help sobre essa função daqui, se eu
04:46 confirmar eu vou para um buffer que
04:47 coincidentemente era exatamente o que eu
04:49 já tinha gerado, e se eu rodar essa
04:53 expressão daqui eu vou pro help
04:56 tradicional sobre o find-file, que tem
04:58 hiperlinks no sentido tradicional,
05:01 que você clica neles e coisas assim, mas
05:03 que você não consegue ver o
05:04 código fonte deles.

05:05 Às vezes a gente vai querer seguir esse
05:07 hiperlink daqui, `find-efunction', que
05:10 vai pro código fonte do find-file, e em
05:13 alguns casos... daqui a pouco eu vou
05:14 mostrar casos assim. Então, deixa eu
05:17 voltar...

05:19 então: M-h M-f vai pra links sobre uma função
05:23 e M-h M-k vai pra links sobre uma tecla...
05:26 então se eu quiser mais informações sobre
05:31 o `M-.' e o `M-', que são go to e go back,
05:34 eu posso rodar essas expressões daqui...
05:38 lembrem que o eek
05:42 é um hiperlink pra ação de uma
05:44 sequência de teclas,
05:45 então ele faz a mesma coisa que
05:47 se eu batesse isso aqui na mão, e isso aqui
05:49 é um bom modo da gente lembrar uma
05:51 sequência de teclas que a gente quer
05:52 usar depois... e ele trata isso aqui como
05:55 um comentário, e esse comentário tem o
05:57 nome da função. Então se eu executar isso
05:59 aqui eu consigo um bocado de help sobre
06:01 essa função daqui, e se eu por acaso
06:04 quiser ver o código fonte eu posso ir ou
06:07 pra cá, que tem o o comentário de como é
06:09 que ela funciona - o "docstring" dela -
06:13 ou pra cá...

06:14 e aí eu vou pro arquivo onde ela tá
06:17 definida, que é um arquivo grandão
06:19 chamado xref.el, etc...

06:26 Deixa eu seguir esse link daqui.
06:30 Lembrem que no tutorial... quer dizer, no
06:33 intro sobre Lean4, a seção 8 pedia pra
06:36 vocês testarem isso daqui...

06:38 eu vou ter que reduzir a fonte...

06:39 e esse link daqui vai
06:41 pro código fonte do Lean... de um dos
06:45 arquivos da biblioteca básica do Lean...

06:47 o nome, `find-lean4prefile', não é muito bom...
06:50 eu tô chamando esses links de "preamble"
06:55 baseado em como as coisas são
06:57 no Haskell, em que as bibliotecas
06:59 básicas se chamam "Preamble", mas no Lean
07:01 isso tá meio errado... mas eu mantive
07:03 o nome errado por motivos históricos -
07:06 eu não tive tempo de consertar isso.

07:08 Então, se eu seguir esse link daqui
07:10 ele vai para um arquivo em Lean...
07:15 e Lean leva um tempinho para processar
07:18 esse arquivo, pra conseguir criar
07:22 links em alguns pontos dele e
07:25 coisas assim... e aqui eu posso testar
07:27 o `M-.', que é o "go to", e o `M-,',
07:32 que é o "go back"... então, por exemplo,
07:34 se eu quiser saber mais sobre a classe
07:36 Inhabited eu uso a tecla de "go to" aqui,
07:39 que é `M-.', e ele vai pra um
07:42 outro arquivo...

07:44 e se eu bater M-, eu volto para cá.

07:47 Então testem isso, tá...
07:49 isso é uma das primeiras coisas que eu
07:51 quero que vocês testem.

07:55 Agora o segundo bloquinho.

08:00 Eu não sei se vocês lembram disso, mas se
08:02 a gente bater `M-x l' a gente vai pra
08:05 esse arquivo de anotações de Lean.

08:07 Então nesse momento se eu bater `M-x l' isso
08:09 não faz nada porque eu já tou nesse arquivo.

08:11 No computador de vocês o Emacs vai pra
08:13 uma cópia temporária desse arquivo,
08:17 no meu ele vai pro arquivo em si...

08:25 Aqui tem um link que tá errado, caramba...
08:28 eu devia ter posto isso num outro bloco...
08:32 ah, não, não - tá certo.

08:34 Então, eu contei para vocês que `M-x l'
08:37 vem para cá, e eu não lembro se vocês
08:40 já testaram o `M-x a', que também faz
08:42 uma coisa parecida...

08:44 Então, agora há pouco a gente tava
08:47 vendo o `M-h M-k', que vai pro help
08:50 sobre uma tecla - `k' é de `key'...

08:53 e agora a gente vai ver `M-h M-f',
08:55 que vai pro help sobre uma função.

08:57 Aqui a gente tem uma função com um nome
08:58 muito curto - `l'. Como é que a gente
09:00 consegue mais informação sobre ela?

09:02 A gente pode bater `M-h M-h l ENTER',
09:05 E aí ele abre esse buffer aqui,
09:10 com montão de links sobre a função `l',

09:12 ou a gente pode seguir isso aqui,
09:14 que é um link pro efeito de bater
09:17 `M-h M-f l'...

09:20 E aí nesse caso isso é uma função que
09:22 não tem uma descrição - ela não tá
09:24 documentada... então é melhor a gente ir
09:26 para cá e ver o código fonte dela. Ela é
09:28 uma função muito curta, ó - é uma função
09:30 que tem uma linha só, é isso aqui...

09:34 e ela vai pro arquivo de anotações sobre Lean.
09:37 a mesma coisa pro a - e um dos links aqui
09:39 vai pro código fonte dela - é esse...

09:44 e o `a' ele garante que esse
09:48 diretório existe - /tmp/L/ -
09:50 e ele abre o arquivo /tmp/L/a.lean.
09:57 Tá? Isso vai ser importante depois.

10:00 Nesse momento o a.lean... bom, eu
10:04 tou usando esse a.lean como um arquivo
10:06 temporário, e aqui tem umas coisas que eu
10:08 botei nele agora há pouco, num dos testes.

10:19 Outra coisa que pode ser útil para
10:21 algumas pessoas é a seguinte... algumas
10:23 pessoas vão precisar definir sequências
10:25 novas de teclas - o Halian precisou
10:28 disso porque o F8 pra ele já tava
10:30 definido de um outro jeito...

10:32 nas minhas anotações sobre MacOS, OSX,
10:33 ou whatever, como as pessoas queiram chamar...
10:38 tem uma seção sobre o arquivo de
10:41 configuração que eu criei pro Halian - que
10:43 a gente criou juntos... e tem esse
10:47 trechinho no arquivo de anotações dele...

10:49 ele precisou definir o `C-RET',
10:53 `C-Return', como a função que tava
10:55 associada ao F8...

10:57 Então esse comando daqui define
10:59 que o `C-Return' faz isso aqui,
11:01 e essa linha daqui foi gerada
11:04 por essa linha daqui, find-esetkey-links,
11:07 que gera esse buffer temporário...

11:10 E eu escolhi mandar isso aqui pro Halian.

11:15