-- -- This file has been auto-generated by egison-translator. -- def station : Matcher String := string def price : Matcher Integer := integer def graph : Matcher [(String, [(String, Integer)])] := multiset (station, multiset (station, price)) def graphData : [(String, [(String, Integer)])] := [ ( "Tokyo" , [ ("Shinjuku", 200) , ("Shibuya", 200) , ("Mitaka", 390) , ("Kinshicho", 160) , ("Kitasenju", 220) ] ) , ( "Shinjuku" , [ ("Tokyo", 200) , ("Shibuya", 160) , ("Mitaka", 220) , ("Kinshicho", 220) , ("Kitasenju", 310) ] ) , ( "Shibuya" , [ ("Tokyo", 200) , ("Shinjuku", 160) , ("Mitaka", 310) , ("Kinshicho", 220) , ("Kitasenju", 310) ] ) , ( "Mitaka" , [ ("Tokyo", 390) , ("Shinjuku", 220) , ("Shibuya", 310) , ("Kinshicho", 470) , ("Kitasenju", 550) ] ) , ( "Kinshicho" , [ ("Tokyo", 160) , ("Shinjuku", 220) , ("Shibuya", 220) , ("Mitaka", 470) , ("Kitasenju", 220) ] ) , ( "Kitasenju" , [ ("Tokyo", 220) , ("Shinjuku", 310) , ("Shibuya", 310) , ("Mitaka", 550) , ("Kinshicho", 220) ] ) ] def trips := matchAll graphData as graph with | (#"Tokyo", ($s_1, $p_1) :: _) :: (loop $i (2, 5, _) (( #s_(i - 1) , ($s_i, $p_i) :: _ ) :: ...) (( #s_5 , ( #"Tokyo" & $s_6 , $p_6 ) :: _ ) :: _)) -> (sum (map (\i -> p_i) (between 1 6)), s) def main (args: [String]) : IO () := do print "Route list:" each (compose show print) trips write "Lowest price:" print (show (min (map (\(x, y) -> x) trips)))