部分整理自 Parsing Techniques
##考古
| #!/bin/bash | |
| # NAME : fscan_v3.sh | |
| # VERSION : v3 | |
| # AUTHOR : FTS | |
| # Example : sudo bash fscan_v3.sh 2008 2010 3001 3002 1 6 | |
| # $1 lower-grade | |
| # $2 upper-grade | |
| # $3 lower-major |
| #!/usr/bin/env stack | |
| {- stack | |
| --resolver lts-5.11 | |
| --install-ghc | |
| runghc | |
| --package wreq | |
| --package text | |
| --package containers | |
| --package lens | |
| -} |
#Erik Meijer FP Foundamentals Notes
xs = take n xs ++ drop n xs // 7:18|> //9:50| # Anonymous constructor | |
| (&%{ok: &1}).(1) # => %{ok: 1} | |
| Enum.map 1..5, &{&1, &1 * 2} # => [{1, 2}, {2, 4}, {3, 6}, {4, 8}, {5, 10}] | |
| (&[1|&1]).(2) # => [1 | 2] | |
| #macro | |
| Enum.reduce items, %{}, fn item, map -> | |
| Map.update(map, item, 1, & &1 + 1) | |
| end |
| defmodule CnId do | |
| defp parse!(id) do | |
| <<adcode :: 6-bytes, year :: 4-bytes, month :: 2-bytes, day :: 2-bytes, seq_code :: 3-bytes, check_code :: 1-bytes>> = id | |
| %{ | |
| adcode: adcode, | |
| birthday: Date.from_iso8601!("#{year}-#{month}-#{day}"), | |
| seq_code: seq_code, | |
| check_code: check_code |