Konversikan Haskell ke Kotlin menggunakan AI

Terjemahan kode sumber-ke-sumber dari Haskell menggunakan AI melibatkan penggunaan teknik pemrosesan bahasa alami (NLP) dan algoritme pembelajaran mesin untuk menganalisis dan memahami kode sumber

Format keluaran

FAQ

Tantangan Terjemahan

Masalah Terjemahan Contoh Sintaks Haskell Contoh Sintaks Kotlin Skor (1-10)
Kelas Tipe class Show a where show :: a -> String interface Show<T> { fun show(): String } 7
Evaluasi Malas let x = 1 + 2 in x * 3 val x = 1 + 2; x * 3 8
Pencocokan Pola case x of (Just y) -> y; _ -> 0 when (x) { is Some -> y; else -> 0 } 6
Fungsi Orde Tinggi map (+1) [1,2,3] [1,2,3].map { it + 1 } 3
Monad do { x <- Just 1; return (x + 1) } val x = 1; x + 1 (menggunakan let untuk chaining) 9
Tipe Data Aljabar data Maybe a = Nothing | Just a sealed class Maybe<out T> { object Nothing : Maybe<Nothing>(); data class Just<T>(val value: T) : Maybe<T>() } 5
Parameter Implicit show x = ... (menggunakan konteks Show) fun show(x: T): String (memerlukan tipe eksplisit) 8
Inferensi Tipe let x = 42 val x: Int = 42 4

Kelas Tipe

Dalam Haskell, kelas tipe memungkinkan polimorfisme ad-hoc. Sebagai contoh:

class Show a where
    show :: a -> String

Dalam Kotlin, ini dapat direpresentasikan menggunakan antarmuka:

interface Show<T> {
    fun show(): String
}

Referensi: Kelas Tipe Haskell

Evaluasi Malas

Haskell menggunakan evaluasi malas secara default, memungkinkan ekspresi didefinisikan tanpa segera dievaluasi:

let x = 1 + 2 in x * 3

Dalam Kotlin, Anda biasanya akan mengevaluasi ekspresi dengan segera:

val x = 1 + 2; x * 3

Referensi: Evaluasi Malas Haskell

Pencocokan Pola

Pencocokan pola Haskell ringkas dan kuat:

case x of
    Just y -> y
    _      -> 0

Dalam Kotlin, Anda dapat mencapai fungsionalitas serupa menggunakan when:

when (x) {
    is Some -> y
    else -> 0
}

Referensi: Pencocokan Pola Haskell

Fungsi Orde Tinggi

Fungsi orde tinggi Haskell sederhana:

map (+1) [1,2,3]

Dalam Kotlin, Anda dapat menggunakan fungsi map dengan lambda:

[1,2,3].map { it + 1 }

Referensi: Fungsi Orde Tinggi Haskell

Monad

Sintaks monadik Haskell bisa kompleks:

do { x <- Just 1; return (x + 1) }

Dalam Kotlin, Anda perlu menggunakan pendekatan yang lebih eksplisit, sering menggunakan let untuk chaining:

val x = 1; x + 1

Referensi: Monad Haskell

Tipe Data Aljabar

Tipe data aljabar Haskell ringkas:

data Maybe a = Nothing | Just a

Dalam Kotlin, Anda dapat menggunakan kelas tersegel:

sealed class Maybe<out T> {
    object Nothing : Maybe<Nothing>()
    data class Just<T>(val value: T) : Maybe<T>()
}

Referensi: Tipe Data Aljabar Haskell

Parameter Implicit

Haskell memungkinkan parameter implicit melalui kelas tipe:

show x = ...

Dalam Kotlin, Anda harus mendeklarasikan tipe secara eksplisit:

fun show(x: T): String { ... }

Referensi: Parameter Implicit Haskell

Inferensi Tipe

Haskell memiliki inferensi tipe yang kuat:

let x = 42

Dalam Kotlin, Anda sering perlu menentukan tipe secara eksplisit:

val x: Int = 42

Referensi: Inferensi Tipe Haskell