162 \begin{tabular}{ll} |
162 \begin{tabular}{ll} |
163 Email: & christian.urban at kcl.ac.uk\\ |
163 Email: & christian.urban at kcl.ac.uk\\ |
164 %Office: & N\liningnums{7.07} (North Wing, Bush House)\bigskip\\ |
164 %Office: & N\liningnums{7.07} (North Wing, Bush House)\bigskip\\ |
165 Slides \& Code: & KEATS\bigskip\\ |
165 Slides \& Code: & KEATS\bigskip\\ |
166 |
166 |
167 Office Hour: & Fridays 13:00 -- 14:00\\ |
167 Office Hour: & Thursdays 13:00 -- 14:00\\ |
168 Location: & N7.07 (North Wing, Bush House)\bigskip\\ |
168 Location: & N7.07 (North Wing, Bush House)\bigskip\\ |
169 |
169 |
170 Pollev: & \texttt{\alert{https://pollev.com/cfltutoratki576}}\\ \\ |
170 %Pollev: & \texttt{\alert{https://pollev.com/cfltutoratki576}}\\ \\ |
171 \end{tabular} |
171 \end{tabular} |
172 \end{center} |
172 \end{center} |
173 |
173 |
174 \end{frame} |
174 \end{frame} |
175 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
175 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
335 % |
335 % |
336 %\end{frame} |
336 %\end{frame} |
337 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
337 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
338 |
338 |
339 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
339 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
340 \begin{frame}[c,fragile] |
340 % \begin{frame}[c,fragile] |
341 \frametitle{Polyorphic Types} |
341 % \frametitle{Polyorphic Types} |
342 |
342 |
343 %To be avoided:\bigskip\bigskip |
343 % %To be avoided:\bigskip\bigskip |
344 \small |
344 % \small |
345 |
345 |
346 \begin{lstlisting}[language=Scala, numbers=none, xleftmargin=-6mm] |
346 % \begin{lstlisting}[language=Scala, numbers=none, xleftmargin=-6mm] |
347 def length_string_list(lst: List[String]): Int = |
347 % def length_string_list(lst: List[String]): Int = |
348 lst match { |
348 % lst match { |
349 case Nil => 0 |
349 % case Nil => 0 |
350 case x::xs => 1 + length_string_list(xs) |
350 % case x::xs => 1 + length_string_list(xs) |
351 } |
351 % } |
352 |
352 |
353 |
353 |
354 def length_int_list(lst: List[Int]): Int = |
354 % def length_int_list(lst: List[Int]): Int = |
355 lst match { |
355 % lst match { |
356 case Nil => 0 |
356 % case Nil => 0 |
357 case x::xs => 1 + length_int_list(xs) |
357 % case x::xs => 1 + length_int_list(xs) |
358 } |
358 % } |
359 \end{lstlisting} |
359 % \end{lstlisting} |
360 |
360 |
361 \end{frame} |
361 % \end{frame} |
362 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
362 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
363 |
363 |
364 |
364 |
365 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
365 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
366 \begin{frame}[c,fragile] |
366 % \begin{frame}[c,fragile] |
367 \frametitle{Polyorphic Types} |
367 % \frametitle{Polyorphic Types} |
368 |
368 |
369 \small |
369 % \small |
370 |
370 |
371 \begin{lstlisting}[language=Scala, numbers=none, xleftmargin=-6mm] |
371 % \begin{lstlisting}[language=Scala, numbers=none, xleftmargin=-6mm] |
372 def length[A](lst: List[A]): Int = lst match { |
372 % def length[A](lst: List[A]): Int = lst match { |
373 case Nil => 0 |
373 % case Nil => 0 |
374 case x::xs => 1 + length(xs) |
374 % case x::xs => 1 + length(xs) |
375 } |
375 % } |
376 |
376 |
377 length(List("1", "2", "3", "4")) |
377 % length(List("1", "2", "3", "4")) |
378 length(List(1, 2, 3, 4)) |
378 % length(List(1, 2, 3, 4)) |
379 |
379 |
380 |
380 |
381 def map[A, B](lst: List[A], f: A => B): List[B] = |
381 % def map[A, B](lst: List[A], f: A => B): List[B] = |
382 lst match { |
382 % lst match { |
383 case Nil => Nil |
383 % case Nil => Nil |
384 case x::xs => f(x)::map(xs, f) |
384 % case x::xs => f(x)::map(xs, f) |
385 } |
385 % } |
386 \end{lstlisting} |
386 % \end{lstlisting} |
387 \end{frame} |
387 % \end{frame} |
388 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
388 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
389 |
389 |
390 |
390 |
391 |
391 |
392 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
392 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
483 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
483 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
484 |
484 |
485 |
485 |
486 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
486 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
487 |
487 |
488 \begin{frame}[c] |
488 \begin{frame}[t] |
489 \frametitle{Where to go on from here?} |
489 \frametitle{Where to go on from here?} |
490 |
490 |
491 \begin{itemize} |
491 \begin{itemize} |
492 \item Martin Odersky (EPFL) developed now Scala 3\medskip |
492 \item Martin Odersky (EPFL) developed Scala\medskip |
493 |
493 |
494 \item I use Ammonite by Haoyi Li\medskip |
494 \item I use Ammonite by Haoyi Li\medskip |
495 |
495 |
496 \item Elm (\url{http://elm-lang.org})\ldots web applications with style\medskip |
496 \item Elm (\url{http://elm-lang.org})\ldots web applications with style\medskip |
497 |
497 |
498 \item Haskell, Ocaml, Standard ML, Scheme, \ldots |
498 \item Haskell, Ocaml, Standard ML, Scheme, \ldots \bigskip\bigskip\bigskip |
499 \end{itemize} |
499 \end{itemize} |
500 |
500 |
501 \begin{textblock}{5}(12,9) |
501 \begin{textblock}{5}(12,9) |
502 \includegraphics[scale=0.15]{../pics/haojili.png} |
502 \includegraphics[scale=0.15]{../pics/haojili.png} |
503 \end{textblock} |
503 \end{textblock} |
504 \end{frame} |
504 |
|
505 \only<2->{C++, Scala, } |
|
506 \only<3->{PHP, Python, Perl, Bash} |
|
507 |
|
508 \end{frame} |
|
509 |
|
510 |
505 |
511 |
506 |
512 |
507 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
513 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
508 |
514 |
509 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
515 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |