matrix-as-xyz-0.1.2.2: Read and Display Jones-Faithful notation for spacegroup and planegroup

Copyright(c) Jun Narumi 2018-2020
LicenseBSD3
Maintainernarumij@gmail.com
Stabilityexperimental
Portability?
Safe HaskellNone
LanguageHaskell2010

Data.Matrix.AsXYZ.ParseXYZ

Description

Jones-Faithful notation parser for spacegroup.

Synopsis

Documentation

type ReadNum b = Value -> Either String b Source #

equivalentPositions Source #

Arguments

:: Num a 
=> ReadNum a

ratio or floating or integral

-> CharParser () [[a]] 

Jones-Faithful notation parser

>>> parse (equivalentPositions integral) "" "x+1,y+2,z+3"
Right [[1,0,0,1],[0,1,0,2],[0,0,1,3]]

transformPpABC :: Num a => ReadNum a -> CharParser () [[a]] Source #

Same as equivalentPositions but uses abc instead of xyz

>>> parse (transformPpABC integral) "" "a+1,b+2,c+3"
Right [[1,0,0,1],[0,1,0,2],[0,0,1,3]]

transformQqXYZ :: Num a => ReadNum a -> CharParser () [[a]] Source #

Alias of equivalentPositions

>>> parse (transformQqXYZ integral) "" "x+1,y+2,z+3"
Right [[1,0,0,1],[0,1,0,2],[0,0,1,3]]

ratio :: Integral a => ReadNum (Ratio a) Source #

Converter of 3 kind of number (int,float,ratio) string to rational

>>> parse (equivalentPositions ratio) "" "x+1,y+2,z+3"
Right [[1 % 1,0 % 1,0 % 1,1 % 1],[0 % 1,1 % 1,0 % 1,2 % 1],[0 % 1,0 % 1,1 % 1,3 % 1]]

floating :: Floating a => ReadNum a Source #

Converter of 3 kind of number description to floating point

>>> parse (equivalentPositions floating) "" "x+1,y+2,z+3"
Right [[1.0,0.0,0.0,1.0],[0.0,1.0,0.0,2.0],[0.0,0.0,1.0,3.0]]

integral :: Integral a => ReadNum a Source #

Converter of integral number description to integral

This can not read ratio and floating string (e.g. '1/2', '0.1')

>>> parse (equivalentPositions integral) "" "x+1,y+2,z+3"
Right [[1,0,0,1],[0,1,0,2],[0,0,1,3]]

minus :: Num a => Maybe Char -> a -> a Source #

overlap :: Eq a => [a] -> Bool Source #