You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Hi, I have the following code in one of my diagrams in latex:
importDiagrams.TwoD.Text
superScript c =case c of'0'->'\x2070''1'->'\xb9''2'->'\xb2''3'->'\xb3''4'->'\x2074''5'->'\x2075''6'->'\x2076''7'->'\x2077''8'->'\x2078''9'->'\x2079''+'->'\x207A''-'->'\x207B''='->'\x207C''('->'\x207D'')'->'\x207E''i'->'\x2071''n'->'\x207F'otherwise-> c
format ('^':'-':d:chars) = [superScript '-',superScript d] ++ format chars
format ('^':d:chars) = [superScript d] ++ format chars
format (c:chars) = [c] ++ format chars
format []=[]
dia = text (format "A^-3d^2+3A^-1d+3A") # scale 0.2<> strutX (7)
which doesn't render the diagram at all.
I checked the diagrams-builder-cairo's temporary haskell file, and found that it didn't translate the format function's pattern matching as expected:
{-# LANGUAGE NoMonomorphismRestriction, TypeFamilies,
FlexibleContexts #-}
moduleDiagram1804289383846930886whereimportDiagrams.PreludeimportDiagrams.Backend.CairoimportDiagrams.TwoD.Text
superScript c
=case c of'0'-> '\8304'
'1'-> '\185'
'2'-> '\178'
'3'-> '\179'
'4'-> '\8308'
'5'-> '\8309'
'6'-> '\8310'
'7'-> '\8311'
'8'-> '\8312'
'9'-> '\8313'
'+'-> '\8314'
'-'-> '\8315'
'='-> '\8316'
'('-> '\8317'
')'-> '\8318'
'i'-> '\8305'
'n'-> '\8319'
otherwise-> c
format ((('^':'-') : d) : chars)
= [superScript '-', superScript d] ++ format chars
format (('^': d) : chars) = [superScript d] ++ format chars
format (c : chars) = [c] ++ format chars
format []=[]
dia = text (format "A^-3d^2+3A^-1d+3A") # scale 0.2<> strutX (7)
which in turn causes the following error message (it actually produces something cryptic, see #23):
bug.hs:27:17:
Couldn't match expected type ‘[Char]’ with actual type ‘Char’
In the pattern: '-'
In the pattern: '^' : '-'
In the pattern: ('^' : '-') : d
bug.hs:28:35:
Couldn't match expected type ‘Char’ with actual type ‘[[Char]]’
In the first argument of ‘superScript’, namely ‘d’
In the expression: superScript d
bug.hs:29:10:
Couldn't match expected type ‘[Char]’ with actual type ‘Char’
In the pattern: '^'
In the pattern: '^' : d
In the pattern: ('^' : d) : chars
bug.hs:29:43:
Couldn't match expected type ‘Char’ with actual type ‘[[Char]]’
In the first argument of ‘superScript’, namely ‘d’
In the expression: superScript d
bug.hs:30:23:
Couldn't match expected type ‘Char’ with actual type ‘[[Char]]’
In the expression: c
In the first argument of ‘(++)’, namely ‘[c]’
bug.hs:32:20:
Couldn't match type ‘Char’ with ‘[[Char]]’
Expected type: [[[Char]]]
Actual type: [Char]
In the first argument of ‘format’, namely ‘"A^-3d^2+3A^-1d+3A"’
In the first argument of ‘text’, namely
‘(format "A^-3d^2+3A^-1d+3A")’
In the first argument of ‘(#)’, namely
‘text (format "A^-3d^2+3A^-1d+3A")’
If I replace it by explicitly writing down the parenthesis precedence like so:
\begin{diagram}[width=400,height=75]
importDiagrams.TwoD.Text
superScript c =case c of'0'->'\x2070''1'->'\xb9''2'->'\xb2''3'->'\xb3''4'->'\x2074''5'->'\x2075''6'->'\x2076''7'->'\x2077''8'->'\x2078''9'->'\x2079''+'->'\x207A''-'->'\x207B''='->'\x207C''('->'\x207D'')'->'\x207E''i'->'\x2071''n'->'\x207F'otherwise-> c
format ('^':('-':(d:(chars)))) = [superScript '-',superScript d] ++ format chars
format ('^':(d:chars)) = [superScript d] ++ format chars
format (c:chars) = [c] ++ format chars
format []=[]
dia = text (format "A^-3d^2+3A^-1d+3A") # scale 0.2<> strutX (7)
it works fine.
Here is a latex document with both examples:
% Created 2015-11-08 Sun 03:21\documentclass[11pt]{article}
\tolerance=1000
\usepackage{amsmath}
\usepackage[backend=cairo, extension=pdf, outputdir=diagrams]{/home/amitai/github/haskell/diagrams/diagrams-builder/latex/diagrams-latex}
\usepackage{graphicx}
\author{Amitai Hoze}
\date{\today}
\title{Bug reproduction}
\begin{document}
\maketitle\section{Reproducing the bug}
\label{sec:orgheadline1}
\begin{diagram}[width=400,height=75]
import Diagrams.TwoD.Text
superScript c = case c of
'0' -> '\x2070''1' -> '\xb9''2' -> '\xb2''3' -> '\xb3''4' -> '\x2074''5' -> '\x2075''6' -> '\x2076''7' -> '\x2077''8' -> '\x2078''9' -> '\x2079''+' -> '\x207A''-' -> '\x207B''=' -> '\x207C''(' -> '\x207D'')' -> '\x207E''i' -> '\x2071''n' -> '\x207F'
otherwise -> c
format ('^':'-':d:chars) = [superScript '-',superScript d] ++ format chars
format ('^':d:chars) = [superScript d] ++ format chars
format (c:chars) = [c] ++ format chars
format [] = []
dia = text (format "A^-3d^2+3A^-1d+3A") # scale 0.2 <> strutX (7)
\end{diagram}
\section{Temporary fix}
\label{sec:orgheadline2}
\begin{diagram}[width=400,height=75]
import Diagrams.TwoD.Text
superScript c = case c of
'0' -> '\x2070''1' -> '\xb9''2' -> '\xb2''3' -> '\xb3''4' -> '\x2074''5' -> '\x2075''6' -> '\x2076''7' -> '\x2077''8' -> '\x2078''9' -> '\x2079''+' -> '\x207A''-' -> '\x207B''=' -> '\x207C''(' -> '\x207D'')' -> '\x207E''i' -> '\x2071''n' -> '\x207F'
otherwise -> c
format ('^':('-':(d:(chars)))) = [superScript '-',superScript d] ++ format chars
format ('^':(d:chars)) = [superScript d] ++ format chars
format (c:chars) = [c] ++ format chars
format [] = []
dia = text (format "A^-3d^2+3A^-1d+3A") # scale 0.2 <> strutX (7)
\end{diagram}
\end{document}
Hi, I have the following code in one of my diagrams in latex:
which doesn't render the diagram at all.
I checked the
diagrams-builder-cairo
's temporary haskell file, and found that it didn't translate theformat
function's pattern matching as expected:which in turn causes the following error message (it actually produces something cryptic, see #23):
If I replace it by explicitly writing down the parenthesis precedence like so:
it works fine.
Here is a latex document with both examples:
versions used
diagrams-builder: 0.7.2.0
ghc: 7.10.2
diagrams-core: 1.3.0.3
diagrams-cairo: 1.3.0.5
NixOS: NixOS/nixpkgs@819a375
The text was updated successfully, but these errors were encountered: