Context Navigation


Changeset 18


Ignore:
Timestamp:
Nov 23, 2007, 12:40:25 AM (18 years ago)
Author:
neil.c.c.brown
Message:

Changed the syntax to highlight return, and tidied up the AST-navigation stuff (including adding a diagram).

Location:
docs/trunk/200711-tock-seminars
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • docs/trunk/200711-tock-seminars/200711-tock-slides.tex

    r17 r18
    4444% \logo{\pgfuseimage{university-logo}}
    4545
    46(追記) %Note: return isn't a Haskell keyword, but it's used enough and important (追記ここまで)
    47(追記) % enough that I think it's worth highlighting as if it were one. (追記ここまで)
    48(追記) (追記ここまで)
    4649%Note: the shorter keyword symbols (like =) must go before any longer
    47% versions (like =>)(削除) (削除ここまで)
    50% versions (like =>)(追記) in otherkeywords (追記ここまで)
    4851
    4952%Also, "otherkeywords" seem to be highlighted even in strings. This
    5558% the single quote as a string delimiter for this reason.
    5659\lstdefinelanguage[improved]{Haskell}
    57 {morekeywords={data,type,newtype,let,do,where,if,then,else(削除) (削除ここまで)},
    60 {morekeywords={data,type,newtype,let,do,where,if,then,else(追記) ,return (追記ここまで)},
    5861 otherkeywords={::,=,==,->,=>,>>,>>=},
    5962 morecomment=[l]{--},
    651654\frametitle{Navigating the AST}
    652655%FIXME: picture
    656(追記) \begin{columns} (追記ここまで)
    657(追記) \column{.5\textwidth} (追記ここまで)
    653658\begin{itemize}
    654659 \item Remember the route
    655660 \begin{itemize}
    656 \item (削除) 3rd child, 1st child, 1st (削除ここまで) child
    661 \item (追記) 1st child, 1st child, 2nd (追記ここまで) child
    657662 \end{itemize}
    658663 \item Not quite as easy as that in Haskell (the types vary!)
    659664\end{itemize}
    665(追記) \column{.5\textwidth} (追記ここまで)
    666(追記) \includegraphics[height=70mm]{Tock-Navigate-AST.png} (追記ここまで)
    667(追記) \end{columns} (追記ここまで)
    660668\end{frame}
    661669
    662670\begin{frame}[fragile]
    663671\frametitle{Navigating the AST}
    664(削除) (削除ここまで)\begin{itemize}
    665(削除) (削除ここまで) \item Define a new type
    666(削除) (削除ここまで)\end{itemize}
    667(削除) (削除ここまで)\begin{lstlisting}
    668(削除) (削除ここまで)data ASTModifier mon innerT = (innerT -> mon innerT) -> (AST -> mon AST)
    669(削除) (削除ここまで)\end{lstlisting}
    670\begin{itemize}(削除) (削除ここまで)
    671 \item Compose (削除) these types (削除ここまで) as we descend the tree
    672(追記) % (追記ここまで)\begin{itemize}
    673(追記) % (追記ここまで) \item Define a new type
    674(追記) % (追記ここまで)\end{itemize}
    675(追記) % (追記ここまで)\begin{lstlisting}
    676(追記) % (追記ここまで)data ASTModifier mon innerT = (innerT -> mon innerT) -> (AST -> mon AST)
    677(追記) % (追記ここまで)\end{lstlisting}
    678\begin{itemize}(追記) (追記ここまで)
    679 \item Compose (追記) ``routes'' (追記ここまで) as we descend the tree
    672680\end{itemize}
    673681\begin{lstlisting}
    674682buildNode (While e p) route
    675 = do addNode (label e)(削除) (削除ここまで)
    676 (\f (While e p) -> do {e' <- f e ; return (While e' p)})(削除) (削除ここまで)
    677 (削除) addNode (label p) (削除ここまで)
    678 (\f (While e p) -> f p >>= While e)(削除) (削除ここまで)
    683 = do addNode (label e)(追記) (append route (追記ここまで)
    684 (\f (While e p) -> do {e' <- f e ; return (While e' p)})(追記) ) (追記ここまで)
    685 (追記) buildNode p (append route (追記ここまで)
    686 (\f (While e p) -> f p >>= While e)(追記) ) (追記ここまで)
    679687 ...
    680688\end{lstlisting}
    681689\end{frame}
    682(削除) (削除ここまで)
    683(削除) %FIXME: Same slide as two ago... (削除ここまで)
    684690
    685691\begin{frame}[fragile]
    692698buildNode (While e p) route
    693699 = do addNode (label e) (route12 route While)
    694 (削除) addNode (label p) (削除ここまで) (route22 route While)
    700 (追記) buildNode p (追記ここまで) (route22 route While)
    695701 ...
    696702
    697route12 route con f = route . (decomp2 con f return)
    698route22 route con f = route . (decomp2 con return f)
    699
    700decomp2 :: Monad m => (a0 -> a1 -> a) -> (a0 -> m a0) -> (a1 -> m a1) -> a -> m a
    703route12 route con f = append route (decomp2 con f return)
    704route22 route con f = append route (decomp2 con return f)
    705
    706decomp2 :: Monad m =>
    707 (a0 -> a1 -> a) -> (a0 -> m a0) -> (a1 -> m a1) -> a -> m a
    701708\end{lstlisting}
    702709\end{frame}
Note: See TracChangeset for help on using the changeset viewer.

AltStyle によって変換されたページ (->オリジナル) /