7ccaa77797
Otherwise we get an error when trying to compile code with lua or assembler code. To change the default dialect (currenty 5.3 for lua and x86masm for assembler), you can use `--include-in-header` to inject something like \lstset{defaultdialect=[5.2]Lua} Closes #5227.
96 lines
2.8 KiB
Text
96 lines
2.8 KiB
Text
\PassOptionsToPackage{unicode=true}{hyperref} % options for packages loaded elsewhere
|
|
\PassOptionsToPackage{hyphens}{url}
|
|
%
|
|
\documentclass[
|
|
]{article}
|
|
\usepackage{lmodern}
|
|
\usepackage{amssymb,amsmath}
|
|
\usepackage{ifxetex,ifluatex}
|
|
\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex
|
|
\usepackage[T1]{fontenc}
|
|
\usepackage[utf8]{inputenc}
|
|
\usepackage{textcomp} % provides euro and other symbols
|
|
\else % if luatex or xelatex
|
|
\usepackage{unicode-math}
|
|
\defaultfontfeatures{Scale=MatchLowercase}
|
|
\defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
|
|
\fi
|
|
% use upquote if available, for straight quotes in verbatim environments
|
|
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
|
|
\IfFileExists{microtype.sty}{% use microtype if available
|
|
\usepackage[]{microtype}
|
|
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
|
|
}{}
|
|
\makeatletter
|
|
\@ifundefined{KOMAClassName}{% if non-KOMA class
|
|
\IfFileExists{parskip.sty}{%
|
|
\usepackage{parskip}
|
|
}{% else
|
|
\setlength{\parindent}{0pt}
|
|
\setlength{\parskip}{6pt plus 2pt minus 1pt}}
|
|
}{% if KOMA class
|
|
\KOMAoptions{parskip=half}}
|
|
\makeatother
|
|
\usepackage{xcolor}
|
|
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
|
|
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
|
|
\hypersetup{
|
|
pdfborder={0 0 0},
|
|
breaklinks=true}
|
|
\urlstyle{same} % don't use monospace font for urls
|
|
\usepackage{listings}
|
|
\newcommand{\passthrough}[1]{#1}
|
|
\lstset{defaultdialect=[5.3]Lua}
|
|
\lstset{defaultdialect=[x86masm]Assembler}
|
|
\lstnewenvironment{code}{\lstset{language=Haskell,basicstyle=\small\ttfamily}}{}
|
|
\setlength{\emergencystretch}{3em} % prevent overfull lines
|
|
\providecommand{\tightlist}{%
|
|
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
|
\setcounter{secnumdepth}{-2}
|
|
% Redefines (sub)paragraphs to behave more like sections
|
|
\ifx\paragraph\undefined\else
|
|
\let\oldparagraph\paragraph
|
|
\renewcommand{\paragraph}[1]{\oldparagraph{#1}\mbox{}}
|
|
\fi
|
|
\ifx\subparagraph\undefined\else
|
|
\let\oldsubparagraph\subparagraph
|
|
\renewcommand{\subparagraph}[1]{\oldsubparagraph{#1}\mbox{}}
|
|
\fi
|
|
|
|
% set default figure placement to htbp
|
|
\makeatletter
|
|
\def\fps@figure{htbp}
|
|
\makeatother
|
|
|
|
|
|
\date{}
|
|
|
|
\begin{document}
|
|
|
|
\hypertarget{lhs-test}{%
|
|
\section{lhs test}\label{lhs-test}}
|
|
|
|
\texttt{unsplit} is an arrow that takes a pair of values and combines them to
|
|
return a single value:
|
|
|
|
\begin{code}
|
|
unsplit :: (Arrow a) => (b -> c -> d) -> a (b, c) d
|
|
unsplit = arr . uncurry
|
|
-- arr (\op (x,y) -> x `op` y)
|
|
\end{code}
|
|
|
|
\texttt{(***)} combines two arrows into a new arrow by running the two arrows on a
|
|
pair of values (one arrow on the first item of the pair and one arrow on the
|
|
second item of the pair).
|
|
|
|
\begin{verbatim}
|
|
f *** g = first f >>> second g
|
|
\end{verbatim}
|
|
|
|
Block quote:
|
|
|
|
\begin{quote}
|
|
foo bar
|
|
\end{quote}
|
|
|
|
\end{document}
|