Changeset 18
- 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
- 200711-tock-slides.tex (modified) (4 diffs)
- Tock-Navigate-AST.png (added)
Legend:
- Unmodified
- Added
- Removed
-
docs/trunk/200711-tock-seminars/200711-tock-slides.tex
r17 r18 44 44 % \logo{\pgfuseimage{university-logo}} 45 45 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 (追記) (追記ここまで) 46 49 %Note: the shorter keyword symbols (like =) must go before any longer 47 % versions (like =>) (削除) (削除ここまで)50 % versions (like =>)(追記) in otherkeywords (追記ここまで) 48 51 49 52 %Also, "otherkeywords" seem to be highlighted even in strings. This … … 55 58 % the single quote as a string delimiter for this reason. 56 59 \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 (追記ここまで)}, 58 61 otherkeywords={::,=,==,->,=>,>>,>>=}, 59 62 morecomment=[l]{--}, … … 651 654 \frametitle{Navigating the AST} 652 655 %FIXME: picture 656 (追記) \begin{columns} (追記ここまで) 657 (追記) \column{.5\textwidth} (追記ここまで) 653 658 \begin{itemize} 654 659 \item Remember the route 655 660 \begin{itemize} 656 \item (削除) 3rd child, 1st child, 1st (削除ここまで)child661 \item (追記) 1st child, 1st child, 2nd (追記ここまで) child 657 662 \end{itemize} 658 663 \item Not quite as easy as that in Haskell (the types vary!) 659 664 \end{itemize} 665 (追記) \column{.5\textwidth} (追記ここまで) 666 (追記) \includegraphics[height=70mm]{Tock-Navigate-AST.png} (追記ここまで) 667 (追記) \end{columns} (追記ここまで) 660 668 \end{frame} 661 669 662 670 \begin{frame}[fragile] 663 671 \frametitle{Navigating the AST} 664 (削除) (削除ここまで)\begin{itemize}665 (削除) (削除ここまで)\item Define a new type666 (削除) (削除ここまで)\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 tree672 (追記) % (追記ここまで)\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 672 680 \end{itemize} 673 681 \begin{lstlisting} 674 682 buildNode (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)(追記) ) (追記ここまで) 679 687 ... 680 688 \end{lstlisting} 681 689 \end{frame} 682 (削除) (削除ここまで)683 (削除) %FIXME: Same slide as two ago... (削除ここまで)684 690 685 691 \begin{frame}[fragile] … … 692 698 buildNode (While e p) route 693 699 = do addNode (label e) (route12 route While) 694 (削除) addNode (label p) (削除ここまで)(route22 route While)700 (追記) buildNode p (追記ここまで) (route22 route While) 695 701 ... 696 702 697 route12 route con f = route . (decomp2 con f return) 698 route22 route con f = route . (decomp2 con return f) 699 700 decomp2 :: Monad m => (a0 -> a1 -> a) -> (a0 -> m a0) -> (a1 -> m a1) -> a -> m a 703 route12 route con f = append route (decomp2 con f return) 704 route22 route con f = append route (decomp2 con return f) 705 706 decomp2 :: Monad m => 707 (a0 -> a1 -> a) -> (a0 -> m a0) -> (a1 -> m a1) -> a -> m a 701 708 \end{lstlisting} 702 709 \end{frame}
Note:
See TracChangeset
for help on using the changeset viewer.