preview_and_printも普通に組み合わせればいいよね

preview_and_print(data) {
preview(data)
if (ask() == true) {
print(data)
}
}

それぞれ独立したプログラムという前提みたいだから現実的にはpreviewやprintそのものではなく各mainが利用してるlibを再利用することになるけど考え方は変わらない