CP/2425 - FAQs

$ % 18-Abr-2024 \def\start{&&} \def\more{\\&&} \def\sse#1#2{{#1}\subseteq{#2}} \def\iso{\cong} \newenvironment{lcbr}{\left\{\begin{array}{l}}{\end{array}\right.} \def\ana#1{(\hskip -1ex[#1]\hskip -1ex )} \def\cata#1{(\hskip -1.1pt[\hskip 0.1pt #1 \hskip 0.1pt]\hskip -1.1pt)} \def\Seq#1{{#1}^{\star}} \def\fB{\fun B} \def\mcond#1#2#3{#1 \rightarrow #2\;,\;#3} \newenvironment{lcbr}{\left\{\begin{array}{l}}{\end{array}\right.} \def\bang{{!}} \def\Nat{\mathbb{N}} \def\N{\Nat} \def\atmost{\subseteq} \def\alt#1#2{[#1,#2]} \def\comp{\mathbin\cdot} \def\conj#1#2{\mathopen{\langle} #1, #2\mathclose{\rangle}} \def\conv#1{#1^\circ} \def\crflx#1{\Phi_{#1}} \def\dom#1{\delta {#1}} \def\from{\leftarrow} \def\fun#1{\mathsf{#1}} \def\i#1{\mathit{i}_{#1}} \def\inT{\mathsf{in}} \def\outT{\mathsf{out}} \def\implied{\Leftarrow} \def\implies{\Rightarrow} \def\just#1#2{\\&#1& \mathopen{\{}~\mbox{#2}~\mathclose{\}}\\&&} \def\ker#1{\mathbf{ker}\ {#1}} \def\img#1{\mathbf{img}\ {#1}} \def\kons#1{\underline{#1}} \def\larrow#1#2#3{#3\ \xleftarrow{#2}\ #1} \def\ldiv{\mathbin{/}} \def\p#1{\pi_{#1}} \def\plus{\mathbin{\dagger}} \def\rarrow#1#2#3{#1\ \xrightarrow{#2}\ #3} \def\rcb#1#2#3#4{\mathopen{\langle}#1 #2 : #3 : #4\mathclose{\rangle}} \def\rdiv{\mathbin{\setminus}} \def\sep{\rule{15em}{0.3pt}} \def\shrunkby{\mathbin{\upharpoonright}} \def\syd#1#2{\frac{#1}{#2}} \def\to{\rightarrow} \def\trans#1{\overline{#1}} \def\scata#1{⦅\, #1 \,⦆} \def\sep{\rule{15em}{0.3pt}} %-------- \def\Varid#1{\mathbin{#1}} \def\ensuremath#1{#1} \def\Conid#1{\mathbin{#1}} $


Q1 - Vamos poder levar o formulário para o teste?

R: Como se disse nas aulas e está nos avisos, os alunos poderão levar para as provas de avaliação, se assim o entenderem, o formulário da disciplina em papel, desde que dele não conste qualquer anotação manuscrita ou outra.


Q2 - Como é que se verifica analiticamente a igualdade $(f + h) \comp \alpha = \alpha \comp (f + g \times h)$? (Tendo em conta que a expressão é a propriedade grátis de $\alpha$.)

R: Deverá desenhar o diagrama dessa propriedade para obter o tipo (polimórfico) de $\alpha$. A partir desse tipo irá inferir a definição de $\alpha$. Com essa definição já pode verificar analiticamente a lei.


Q3 - Nas perguntas do teste que forem para mostrar os passos usando várias fórmulas, podemos utilizar várias fórmulas de uma vez (ou seja fazer mais do que um passo de cada vez) ou temos de mostrar passo a passo como é que as equações vão ficando?

R: Podem aplicar mais do que uma lei no mesmo passo, desde que as identifiquem na justificação.


Q4 - Encontro-me com dúvidas no exercício 5 da ficha 5. Podem disponibilizar uma resolução?

R: Sugere-se que, em $ap \comp (\trans f \times id) = f$, se substitua $f$ por $uncurry\ g$. Como $\trans f$ é abreviatura de $curry\ f$, obter-se-á \begin{eqnarray} ap \comp (curry\ (uncurry\ g) \times id) = uncurry\ g \end{eqnarray} isto é \begin{eqnarray} ap \comp (g \times id) = uncurry\ g \end{eqnarray} pois $curry (uncurry\ g) = g$. Agora é só introduzir variáveis acima e simplificar.


Q5 - Não consegui resolver o exercício 6 da ficha 6 e preciso de uma orientação. Por onde começar?

R: A primeira coisa que deve fazer é olhar para o diagrama geral do catamorfismo,

e instanciar $g := \cata{\alt{\kons{id}}{(f\comp)}}$. Ter-se-á

\begin{eqnarray} \start \kons{id} : 1 \to A \more (f\comp) : A \to A \end{eqnarray}

A questão surge agora é: qual é o tipo $A$ neste caso? Em geral, $id : B \to B$, isto é, $id : B^B$. Logo $A = B ^ B$. Sendo assim, de imediato se tem $(f\comp): B^B \to B ^ B$. A questão que fica então para pensarem é: e qual é o tipo de $f$? Com isso, ficará totalmente caracterizado o tipo de $rep$...


Q6 - No teste, a primeira pergunta (tipo mais geral de $\alpha = \conj {\i1} {\p1}$, etc etc) correu-me muito mal porque tenho dificuldade na inferência de tipos polimórficos. Há alguma sugestão sobre como e/ou onde estudar melhor este assunto?

R: Sugere-se o estudo de 'A Quick Introduction to Polymorphic Type Checking' que está na Bibliografia.


Q7 - Estive a ver o enunciado do problema 1 do trabalho prático e tive uma dúvida nesta linha "Tem hindex h = 5 pois há 6 colunas maiores que 5". Aqui não deveria ser "h=5 pois há 5 colunas ..." ?

R: Sim, é uma gralha - obrigado por avisar. Já foi corrigida em cp2425t.pdf e no texto fonte.


Q8 - A realizar o exercício 2 da ficha 8, parei em $\conj{impar}{par} = \cata{\conj{\alt{\kons{False}}{\p2}}{\alt{\kons{True}}{\p1}}}$ e não consigo progredir para o ciclo-for. Sei que o objetivo será juntar $\p2$ com o $\p1$ para dar o $swap$, mas não sei como fazê-lo.

R: Aplique a lei da troca a ${\conj{\alt{\kons{False}}{\p2}}{\alt{\kons{True}}{\p1}}}$ e prossiga conforme se mostra nos slides (etc).