import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.function.Supplier;

public class BentukLambda {
    public static void main(String[] args) {
        // Bentuk 1: tanpa parameter, kurung wajib dan kosong
        Supplier<String> sapaan = () -> "Selamat datang!";
        System.out.println(sapaan.get());

        // Bentuk 2: satu parameter, kurung boleh dibuang
        Function<String, Integer> panjang = teks -> teks.length();
        System.out.println(panjang.apply("fungsional"));

        // Bentuk 3: dua parameter, kurung dan koma wajib
        BiFunction<Integer, Integer, Integer> jumlah = (a, b) -> a + b;
        System.out.println(jumlah.apply(7, 5));

        // Bentuk 4: blok statement, return eksplisit dan titik koma
        Function<Integer, String> status = nilai -> {
            if (nilai >= 70) {
                return "LULUS";
            }
            return "REMEDIAL";
        };
        System.out.println(status.apply(85));
        System.out.println(status.apply(60));
    }
}
