///|
fn main {
  let input =
    #|##TITLE=Minimal MoonBit example
    #|##JCAMP-DX=5.01
    #|##DATA TYPE=INFRARED SPECTRUM
    #|##XUNITS=1/CM
    #|##YUNITS=ABSORBANCE
    #|##FIRSTX=1000
    #|##LASTX=1002
    #|##NPOINTS=3
    #|##XYDATA=(X++(Y..Y))
    #|1000 1 2 3
    #|##END=
  try {
    let spectra = @jcamp.read_spectra(input)
    let selected = @jcamp.crop(spectra[0], 1001.0, 1002.0)
    let output = @jcamp.write_spectrum(selected)
    println(output)
    println(@jcamp.inspect(output).valid)
  } catch {
    @jcamp.Invalid(diagnostic) =>
      println(diagnostic.code + ": " + diagnostic.message)
  }
}