# hall-symbols
Haskell Hall Symbols Library
## Quickstart
Make new stack project and move to project directory.
```shell
% stack new hmRepl
% cd hmRepl
```
Edit extra-deps part of stack.yaml like below.
```
extra-deps:
- matrix-as-xyz-0.1.1.1
- symmetry-operations-symbols-0.0.1.2
- hall-symbols-0.1.0.4
```
Build project.
```shell
% stack build
```
Then start repl.
```shell
% stack repl
```
Setup packages and load modules.
```haskell
repl> :set -package matrix-as-xyz
repl> :set -package symmetry-operations-symbols
repl> :set -package hall-symbols
repl> :m Data.Matrix.AsXYZ Data.Matrix.SymmetryOperationsSymbols Crystallography.HallSymbols
```
Use like below.
```haskell
-- print General Positions.
repl> prettyXYZ <$> fromHallSymbols' "C -2yc"
["x,y,z","x+1/2,y+1/2,z","x,-y,z+1/2","x+1/2,-y+1/2,z+1/2"]
repl> fromHallSymbols' "C -2yc" >>= fromMatrix'
[" 1 "," c x,0,z"," t (1/2,1/2,0) "," n (1/2,0,1/2) x,1/4,z"]
```
Or use like below.
```haskell
-- print Generators
repl> prettyXYZ <$> generatorsOfHallSymbols "C -2yc"
["x,y,z","x+1/2,y+1/2,z","x,-y,z+1/2"]
repl> generatorsOfHallSymbols "C -2yc" >>= fromMatrix'
[" 1 "," t (1/2,1/2,0) "," c x,0,z"]
```
## References
1. Concise Space-Group Symbols http://cci.lbl.gov/sginfo/hall_symbols.html , See also : https://github.com/rwgk/sginfo
2. Space-Group Notation with an Explicit Origin
S.R. Hall; Space-Group Notation with an Explicit Origin ; Acta Cryst. (1981). A37, 517-525
3. ITVB 2001 Table A1.4.2.7 Hall symbols http://cci.lbl.gov/sginfo/itvb_2001_table_a1427_hall_symbols.html
## License
See the [LICENSE](https://raw.githubusercontent.com/narumij/hall-symbols/master/LICENSE)
file in the repository.