def compare
(x
: T, y
: T
): Ordering
}
def compare
(x
: Int, y
: Int
): Ordering
= Greater()
}
}
def compare
(x
: Int, y
: Int
): Ordering
= Greater()
}
}
def insert
[T
](x
: T, xs
: List
[T
])(implicit o
: Order
[T
]): List
[T
] = case Greater
() => y
:: insert
(x, ys
) }
}
def merge
[T
](xs
: List
[T
], ys
: List
[T
])(implicit o
: Order
[T
]): List
[T
] = case (x
:: xs1, y
:: ys1
) => case Less
() => x
:: merge
(xs1, ys
) case Equal
() => x
:: merge
(xs1, ys1
) case Greater
() => y
:: merge
(xs, ys1
) }
}
}
insert(3, insert(1, insert(2, empty)))
}
val ys
= insert
(10, insert
(8, insert
(12, empty
)))
println(xs)
println(ys)
println(merge(xs, ys))
}
YWJzdHJhY3QgY2xhc3MgT3JkZXJpbmcKY2FzZSBjbGFzcyBMZXNzKCkgZXh0ZW5kcyBPcmRlcmluZwpjYXNlIGNsYXNzIEVxdWFsKCkgZXh0ZW5kcyBPcmRlcmluZwpjYXNlIGNsYXNzIEdyZWF0ZXIoKSBleHRlbmRzIE9yZGVyaW5nCgphYnN0cmFjdCBjbGFzcyBPcmRlcltUXSB7CglkZWYgY29tcGFyZSh4OiBULCB5OiBUKTogT3JkZXJpbmcKfQoKb2JqZWN0IFVzdWFsT3JkZXIgewoJaW1wbGljaXQgb2JqZWN0IE9yZCBleHRlbmRzIE9yZGVyW0ludF0gewoJCWRlZiBjb21wYXJlKHg6IEludCwgeTogSW50KTogT3JkZXJpbmcgPQoJCQlpZiAoeCA8IHkpIExlc3MoKSBlbHNlCgkJCWlmICh4ID09IHkpIEVxdWFsKCkgZWxzZQoJCQlHcmVhdGVyKCkKCX0KfQoKb2JqZWN0IFJldmVyc2VPcmRlciB7CglpbXBsaWNpdCBvYmplY3QgT3JkIGV4dGVuZHMgT3JkZXJbSW50XSB7CgkJZGVmIGNvbXBhcmUoeDogSW50LCB5OiBJbnQpOiBPcmRlcmluZyA9CgkJCWlmICh4ID4geSkgTGVzcygpIGVsc2UKCQkJaWYgKHggPT0geSkgRXF1YWwoKSBlbHNlCgkJCUdyZWF0ZXIoKQoJfQp9CgpvYmplY3QgT3JkZXJlZExpc3QgewoJZGVmIGVtcHR5ID0gTGlzdCgpCgkKCWRlZiBpbnNlcnRbVF0oeDogVCwgeHM6IExpc3RbVF0pKGltcGxpY2l0IG86IE9yZGVyW1RdKTogTGlzdFtUXSA9CgkJeHMgbWF0Y2ggewoJCQljYXNlIE5pbCA9PiBMaXN0KHgpCgkJCWNhc2UgeSA6OiB5cyA9PgoJCQkJby5jb21wYXJlKHgsIHkpIG1hdGNoIHsKCQkJCQljYXNlIExlc3MoKSA9PiB4IDo6IHhzCgkJCQkJY2FzZSBFcXVhbCgpID0+IHhzCgkJCQkJY2FzZSBHcmVhdGVyKCkgPT4geSA6OiBpbnNlcnQoeCwgeXMpCgkJCQl9CgkJfQoJCglkZWYgbWVyZ2VbVF0oeHM6IExpc3RbVF0sIHlzOiBMaXN0W1RdKShpbXBsaWNpdCBvOiBPcmRlcltUXSk6IExpc3RbVF0gPQoJCSh4cywgeXMpIG1hdGNoIHsKCQkJY2FzZSAoXywgTmlsKSA9PiB4cwoJCQljYXNlIChOaWwsIF8pID0+IHlzCgkJCWNhc2UgKHggOjogeHMxLCB5IDo6IHlzMSkgPT4KCQkJCW8uY29tcGFyZSh4LCB5KSBtYXRjaCB7CgkJCQkJY2FzZSBMZXNzKCkgPT4geCA6OiBtZXJnZSh4czEsIHlzKQoJCQkJCWNhc2UgRXF1YWwoKSA9PiB4IDo6IG1lcmdlKHhzMSwgeXMxKQoJCQkJCWNhc2UgR3JlYXRlcigpID0+IHkgOjogbWVyZ2UoeHMsIHlzMSkKCQkJCX0KCQl9Cn0KCm9iamVjdCBNYWluIGV4dGVuZHMgQXBwIHsKCWltcG9ydCBPcmRlcmVkTGlzdC5fCgkKCXZhbCB4cyA9IHsKCQlpbXBvcnQgVXN1YWxPcmRlci5fCgkJaW5zZXJ0KDMsIGluc2VydCgxLCBpbnNlcnQoMiwgZW1wdHkpKSkKCX0KCQoJaW1wb3J0IFJldmVyc2VPcmRlci5fCgl2YWwgeXMgPSBpbnNlcnQoMTAsIGluc2VydCg4LCBpbnNlcnQoMTIsIGVtcHR5KSkpCgkKCXByaW50bG4oeHMpCglwcmludGxuKHlzKQoJcHJpbnRsbihtZXJnZSh4cywgeXMpKQp9
List(1, 2, 3)
List(12, 10, 8)
List(12, 10, 8, 1, 2, 3)