kandungan
- Pengenalan
- Persekitaran TypeScript
- Mewakili Data Melalui Fungsi
- Set
- Operasi Binari
- Pergi Lebih Jauh
- Satah Euclidean
- Melukis Cakera
- Melukis satah Separuh Mendatar dan Menegak
- Fungsi
- Pergi Lebih Jauh
- Fraktal
- Nombor Kompleks dan Lukisan
- Fraktal Mandelbrot
- Pergi Lebih Jauh
Anda boleh mencari kod sumber di sini: https://github.com/aelassas/functional-ts
pengenalan
Dalam TypeScript, fungsi hanyalah objek. Oleh itu, fungsi boleh dibina, diluluskan sebagai parameter, dikembalikan daripada fungsi atau diberikan kepada pembolehubah. Oleh itu, TypeScript mempunyai fungsi kelas pertama. Lebih tepat lagi, TypeScript menyokong perkara berikut:
- Argumen fungsi tertib tinggi
- Hasil fungsi tertib lebih tinggi
- Fungsi bersarang
- Fungsi tanpa nama
- Penutupan
- Aplikasi separa (ECMAScript 5)
Artikel ini tidak akan membincangkan asas pengaturcaraan berfungsi, kerana anda boleh menemui banyak sumber mengenai topik ini di Internet. Sebaliknya, ia akan bercakap tentang pengaturcaraan berfungsi dalam TypeScript yang digunakan untuk algebra, nombor, satah Euclidean dan fraktal. Contoh yang disediakan dalam artikel ini akan bermula daripada yang mudah kepada yang lebih kompleks tetapi sentiasa digambarkan dengan cara yang ringkas, mudah dan mudah difahami.
Persekitaran TypeScript
Untuk menjalankan kod sumber, anda perlu memasang Node.js. Setelah Node.js dipasang, muat turun arkib kod sumber, nyahzipnya, pergi ke folder kod sumber yang anda nyahzip pada terminal, sediakan persekitaran TypeScript dan pasang semua kebergantungan yang diperlukan dengan arahan berikut:
npm install
Untuk menjalankan demo nombor, jalankan arahan berikut:
npm run numbers
Untuk menjalankan demo pesawat Euclidean, jalankan arahan berikut:
npm run plane
Untuk menjalankan demo fraktal, jalankan arahan berikut:
npm run fractals
Mewakili Data Melalui Fungsi
Biar S ialah mana-mana set unsur a, b, c ... (contohnya, buku di atas meja atau titik satah Euclidean) dan biarkan S' ialah mana-mana subset unsur ini (contohnya, buku hijau di atas meja atau titik dalam bulatan jejari 1 berpusat pada asal satah Euclidean).
Fungsi Ciri S'(x) bagi set S' ialah fungsi yang mengaitkan sama ada benar atau salah dengan setiap elemen x S.
S'(x) = true if x is in S' S'(x) = false if x is not in S'
Biar S menjadi set buku di atas meja dan biarkan S' menjadi set buku hijau di atas meja. Biarkan a dan b dua buah buku hijau, dan biarkan c dan d dua buah buku merah di atas meja. Kemudian:
npm install
Biar S ialah set titik dalam satah Euclidean dan biarkan S' ialah set titik dalam bulatan jejari 1 berpusat pada asal satah Euclidean (0, 0) (bulatan unit). Biarkan a dan b ialah dua titik dalam bulatan unit, dan biarkan c dan d ialah dua titik dalam bulatan berjejari 2 berpusat pada asalan satah Euclidean. Kemudian:
npm run numbers
Oleh itu, mana-mana set S' sentiasa boleh diwakili oleh Fungsi Cirinya. Fungsi yang mengambil sebagai hujah elemen dan mengembalikan benar jika elemen ini dalam S', palsu sebaliknya. Dalam erti kata lain, satu set (jenis data abstrak) boleh diwakili melalui fungsi dalam TypeScript.
npm run plane
Dalam bahagian seterusnya, kita akan melihat cara untuk mewakili beberapa set asas dalam algebra set melalui TypeScript dengan cara yang berfungsi, kemudian kita akan mentakrifkan operasi binari generik pada set. Kami kemudiannya akan menggunakan operasi ini pada nombor kemudian pada subset satah Euclidean. Set ialah struktur data abstrak, subset nombor dan subset bagi satah Euclidean ialah perwakilan struktur data abstrak, dan akhirnya operasi binari ialah logik generik yang berfungsi pada sebarang perwakilan struktur data abstrak.
set
Bahagian ini memperkenalkan perwakilan beberapa set asas dalam algebra set melalui TypeScript.
Set kosong
Biar E sebagai set kosong dan Kosongkan fungsi cirinya. Dalam algebra set, E ialah set unik yang tidak mempunyai unsur. Oleh itu, Kosong boleh ditakrifkan seperti berikut:
npm run fractals
Oleh itu, perwakilan E dalam TypeScript boleh ditakrifkan seperti berikut:
S'(x) = true if x is in S' S'(x) = false if x is not in S'
Dalam algebra set, Empty diwakili seperti berikut:
Oleh itu, jalankan kod di bawah:
S'(a) = S'(b) = true S'(c) = S'(d) = false
memberi keputusan berikut:
Tetapkan Semua
Biar S ialah satu set dan S' ialah subset bagi S yang mengandungi semua elemen dan Semua Fungsi cirinya. Dalam algebra set, S' ialah set penuh yang mengandungi semua elemen. Oleh itu, Semua boleh ditakrifkan seperti ini:
S'(a) = S'(b) = true S'(c) = S'(d) = false
Oleh itu, perwakilan S' dalam TypeScript boleh ditakrifkan seperti berikut:
type Set<t> = (x: T) => boolean </t>
Dalam algebra set, Semua diwakili seperti berikut:
Oleh itu, jalankan kod di bawah:
npm install
memberi keputusan berikut:
Set Singleton
Biar E sebagai set Singleton dan Singleton fungsi cirinya. Dalam algebra set, E juga dikenali sebagai set unit, atau 1-tuple ialah set dengan tepat satu elemen e. Oleh itu, Singleton boleh ditakrifkan seperti berikut:
npm run numbers
Oleh itu, perwakilan E dalam TypeScript boleh ditakrifkan seperti berikut:
npm run plane
Oleh itu, jalankan kod di bawah:
npm run fractals
memberi keputusan berikut:
Set Lain
Bahagian ini membentangkan subset set integer.
Nombor Genap
Biar E ialah set nombor genap dan Genap Fungsi cirinya. Dalam matematik, nombor genap ialah nombor yang merupakan gandaan dua. Oleh itu, Even boleh ditakrifkan seperti berikut:
S'(x) = true if x is in S' S'(x) = false if x is not in S'
Oleh itu, perwakilan E dalam TypeScript boleh ditakrifkan seperti berikut:
S'(a) = S'(b) = true S'(c) = S'(d) = false
Oleh itu, jalankan kod di bawah:
S'(a) = S'(b) = true S'(c) = S'(d) = false
memberi keputusan berikut:
Nombor Ganjil
Biar E ialah set nombor ganjil dan Ganjil fungsi cirinya. Dalam matematik, nombor ganjil ialah nombor yang bukan gandaan dua. Oleh itu, Ganjil boleh ditakrifkan seperti berikut:
type Set<t> = (x: T) => boolean </t>
Oleh itu, perwakilan E dalam TypeScript boleh ditakrifkan seperti berikut:
Empty(x) = false if x is in E Empty(x) = false if x is not in E
Oleh itu, jalankan kod di bawah:
const empty = () => (e: T) => false
memberi keputusan berikut:
Gandaan 3
Biar E ialah set gandaan 3 dan MultipleOfThree Fungsi cirinya. Dalam matematik, gandaan 3 ialah nombor yang boleh dibahagikan dengan 3. Oleh itu, MultipleOfThree boleh ditakrifkan seperti berikut:
console.log('\nEmpty set:') console.log('Is 7 in {}?', common.empty()(7))
Oleh itu, perwakilan E dalam TypeScript boleh ditakrifkan seperti berikut:
All(x) = true if x is in S
Oleh itu, jalankan kod di bawah:
const all = () => (e: T) => true
memberi keputusan berikut:
Gandaan 5
Biar E ialah set gandaan 5 dan MultipleOfFive fungsi cirinya. Dalam matematik, gandaan 5 ialah nombor yang boleh dibahagikan dengan 5. Oleh itu, MultipleOfFive boleh ditakrifkan seperti berikut:
npm install
Oleh itu, perwakilan E dalam TypeScript boleh ditakrifkan seperti berikut:
npm run numbers
Oleh itu, jalankan kod di bawah:
npm run plane
memberi keputusan berikut:
Nombor Perdana
Dulu, semasa saya bermain dengan masalah Project Euler, saya terpaksa menyelesaikan masalah berikut:
npm run fractals
Untuk menyelesaikan masalah ini, mula-mula saya perlu menulis algoritma pantas yang menyemak sama ada nombor yang diberikan adalah perdana atau tidak. Setelah algoritma ditulis, saya menulis algoritma berulang yang berulang melalui nombor perdana sehingga nombor perdana ke-10 001 ditemui.
Biar E ialah set nombor perdana dan Perdana fungsi cirinya. Dalam matematik, perdana ialah nombor asli yang lebih besar daripada 1 yang tidak mempunyai pembahagi positif selain daripada 1 dan dirinya sendiri. Oleh itu, Prime boleh ditakrifkan seperti berikut:
S'(x) = true if x is in S' S'(x) = false if x is not in S'
Oleh itu, perwakilan E dalam TypeScript boleh ditakrifkan seperti berikut:
S'(a) = S'(b) = true S'(c) = S'(d) = false
Oleh itu, jalankan kod di bawah untuk menyelesaikan masalah kami:
S'(a) = S'(b) = true S'(c) = S'(d) = false
di mana getPrime ditakrifkan di bawah:
type Set<t> = (x: T) => boolean </t>
memberi keputusan berikut:
Operasi Binari
Bahagian ini membentangkan beberapa operasi asas untuk membina set baharu daripada set yang diberikan dan untuk memanipulasi set. Di bawah rajah Ven dalam algebra set.
Kesatuan
Biar E dan F ialah dua set. kesatuan E dan F, dilambangkan dengan E U F ialah set semua elemen yang merupakan ahli sama ada E dan F.
Biar Kesatuan menjadi operasi kesatuan. Oleh itu, operasi Kesatuan boleh dilaksanakan seperti berikut dalam TypeScript:
Empty(x) = false if x is in E Empty(x) = false if x is not in E
Menjalankan kod di bawah:
const empty = () => (e: T) => false
memberi keputusan berikut:
persimpangan
Biar E dan F ialah dua set. persimpangan E dan F, dilambangkan dengan E n F ialah set semua elemen yang merupakan ahli E dan F.
Biar Persimpangan menjadi operasi persimpangan. Oleh itu, operasi Persimpangan boleh dilaksanakan seperti berikut dalam TypeScript:
console.log('\nEmpty set:') console.log('Is 7 in {}?', common.empty()(7))
Menjalankan kod di bawah:
All(x) = true if x is in S
memberi keputusan berikut:
Produk Cartesian
Biar E dan F ialah dua set. hasil cartesian E dan F, dilambangkan dengan E × F ialah set semua pasangan tertib (e, f) supaya e ialah ahli E dan f ialah ahli F.
Biar CartesianProduct menjadi operasi produk cartesian. Oleh itu, operasi CartesianProduct boleh dilaksanakan seperti berikut dalam TypeScript:
npm install
Menjalankan kod di bawah:
npm run numbers
memberi keputusan berikut:
Pelengkap
Biar E dan F ialah dua set. pelengkap relatif F dalam E, dilambangkan dengan E F ialah set semua elemen yang merupakan ahli E tetapi bukan ahli F.
Biar Pelengkap menjadi operasi pelengkap relatif. Oleh itu, operasi Pelengkap boleh dilaksanakan seperti berikut dalam TypeScript:
npm run planeMenjalankan kod di bawah:
npm run fractals
memberi keputusan berikut:
Perbezaan simetri
Biar E dan F ialah dua set. perbezaan simetri bagi E dan F, dilambangkan dengan E Δ F ialah set semua elemen yang merupakan ahli sama ada E dan F tetapi bukan dalam persilangan E dan F.
Biar SymmetricDifference menjadi operasi symmetric difference. Oleh itu, operasi SymmetricDifference boleh dilaksanakan dalam dua cara dalam TypeScript. Cara yang remeh ialah menggunakan kesatuan dan operasi pelengkap seperti berikut:
S'(x) = true if x is in S' S'(x) = false if x is not in S'
Cara lain ialah menggunakan operasi binari XOR seperti berikut:
S'(a) = S'(b) = true S'(c) = S'(d) = false
Menjalankan kod di bawah:
S'(a) = S'(b) = true S'(c) = S'(d) = false
memberi keputusan berikut:
Operasi Lain
Bahagian ini membentangkan operasi binari lain yang berguna pada set.
Mengandungi
Let Contains menjadi operasi yang menyemak sama ada elemen berada dalam set atau tidak. Operasi ini ialah fungsi yang mengambil sebagai parameter elemen dan mengembalikan benar jika elemen berada dalam set, palsu sebaliknya.
Oleh itu, operasi ini ditakrifkan seperti berikut dalam TypeScript:
type Set<t> = (x: T) => boolean </t>
Oleh itu, jalankan kod di bawah:
npm install
memberi keputusan berikut:
Tambah
Biar Tambah sebagai operasi yang menambah elemen pada set. Operasi ini ialah fungsi yang mengambil elemen sebagai parameter dan menambahkannya pada set.
Oleh itu, operasi ini ditakrifkan seperti berikut dalam TypeScript:
npm run numbers
Oleh itu, jalankan kod di bawah:
npm run plane
memberi keputusan berikut:
Alih keluar
Biar Alih keluar sebagai operasi yang mengalih keluar elemen daripada set. Operasi ini ialah fungsi yang mengambil sebagai parameter elemen dan mengeluarkannya daripada set.
Oleh itu, operasi ini ditakrifkan seperti berikut dalam TypeScript:
npm run fractals
Oleh itu, jalankan kod di bawah:
S'(x) = true if x is in S' S'(x) = false if x is not in S'
memberi keputusan berikut:
Bagi Mereka Yang Ingin Melangkah Lebih Jauh
Anda boleh melihat betapa mudahnya kita boleh melakukan beberapa algebra set dalam TypeScript melalui Pengaturcaraan Fungsian. Dalam bahagian sebelumnya telah ditunjukkan definisi yang paling asas. Tetapi, Jika anda ingin pergi lebih jauh, anda boleh fikirkan tentang:
- Hubungan melebihi set
- Algebra abstrak, seperti monoid, kumpulan, medan, gelang, ruang K-vektoral dan sebagainya
- Prinsip kemasukan-pengecualian
- Paradoks Russell
- Paradoks Cantor
- Ruang vektor dwi
- Teorem dan Korolari
Satah Euclidean
Dalam bahagian sebelumnya, konsep asas pada set telah dilaksanakan dalam TypeScript. Dalam bahagian ini, kita akan mempraktikkan konsep yang dilaksanakan pada satah Euclidean.
Melukis Cakera
Cakera ialah subset bagi satah yang dibatasi oleh bulatan. Terdapat dua jenis cakera. Cakera Tertutup iaitu cakera yang mengandungi titik bulatan yang membentuk sempadannya dan cakera Buka iaitu cakera yang tidak mengandungi titik bulatan yang membentuk sempadannya.
Dalam bahagian ini, kami akan menyediakan Fungsi ciri cakera Tertutup dan melukisnya dalam halaman HTML5.
Untuk menyediakan Fungsi ciri, pertama sekali kita memerlukan fungsi yang mengira Jarak Euclidean antara dua titik dalam satah. Fungsi ini dilaksanakan seperti berikut:
S'(a) = S'(b) = true S'(c) = S'(d) = false
di mana Titik ditakrifkan di bawah:
S'(a) = S'(b) = true S'(c) = S'(d) = false
Formula ini berdasarkan Teorem Pythagoras.
di mana c ialah jarak Euclidean, a² ialah (p1.X - p2.X)² dan b² ialah (p1.Y - p2.Y)².
Biar Cakera menjadi Fungsi ciri cakera tertutup. Dalam algebra set, takrifan cakera tertutup dalam set real adalah seperti berikut:
di mana a dan b ialah koordinat pusat dan R jejari.
Oleh itu, pelaksanaan Cakera dalam TypeScript adalah seperti berikut:
npm install
Untuk melihat set dalam halaman HTML5, saya memutuskan untuk melaksanakan cabutan fungsi yang melukis set dalam satah Euclidean. Saya memilih HTML5 dan dengan itu menggunakan elemen kanvas untuk melukis.
Oleh itu, saya telah membina satah Euclidean yang digambarkan di bawah melalui cabutan kaedah.
Di bawah pelaksanaan pesawat.
npm run numbers
Dalam fungsi cabutan, kanvas yang mempunyai lebar dan ketinggian yang sama dengan bekas Satah Euclidean dicipta. Kemudian setiap titik dalam piksel (x,y) kanvas digantikan dengan titik hitam jika ia tergolong dalam set. xMin, xMax, yMin dan yMax ialah nilai sempadan yang digambarkan dalam rajah satah Euclidean di atas.
Menjalankan kod di bawah:
npm run plane
di mana cakera ialah id kanvas:
npm run fractals
memberi keputusan berikut:
Melukis Satah Separuh Mendatar dan Menegak
Separuh satah mendatar atau menegak ialah salah satu daripada dua subset di mana satah membahagikan ruang Euclidean. Separuh satah mendatar ialah salah satu daripada dua subset yang mana sebuah satah membahagi ruang Euclidean melalui garis berserenjang dengan paksi Y seperti dalam rajah di atas. menegak separuh satah ialah salah satu daripada dua subset di mana sebuah satah membahagikan ruang Euclidean melalui garis berserenjang dengan paksi X.
Dalam bahagian ini, kami akan menyediakan Fungsi ciri bagi mendatar dan menegak satah separuh, melukisnya dalam halaman HTML5 dan lihat apa kita boleh lakukan jika kita menggabungkannya dengan subset cakera.
Biar HorizontalHalfPlane menjadi Fungsi ciri bagi mendatar separuh satah. Pelaksanaan HorizontalHalfPlane dalam TypeScript adalah seperti berikut:
S'(x) = true if x is in S' S'(x) = false if x is not in S'
Oleh itu, jalankan kod di bawah:
npm install
di mana hhp ialah id kanvas:
npm run numbers
memberi keputusan berikut:
Biar VerticalHalfPlane menjadi Fungsi ciri bagi menegak separuh satah. Pelaksanaan VerticalHalfPlane dalam TypeScript adalah seperti berikut:
npm run planeOleh itu, jalankan kod di bawah:
npm run fractals
di mana vhd ialah id kanvas:
S'(x) = true if x is in S' S'(x) = false if x is not in S'
memberi keputusan berikut:
Dalam bahagian pertama artikel, kami menyediakan operasi binari asas pada set. Oleh itu, dengan menggabungkan persilangan cakera dan separuh satah contohnya, kita boleh melukis subset separuh cakera.
Oleh itu, jalankan sampel di bawah:
S'(a) = S'(b) = true S'(c) = S'(d) = false
di mana hd ialah id kanvas:
S'(a) = S'(b) = true S'(c) = S'(d) = false
memberi keputusan berikut:
Fungsi
Bahagian ini membentangkan fungsi pada set dalam satah Euclidean.
Terjemah
Biar translatePoint menjadi fungsi yang menterjemahkan titik dalam satah. Dalam geometri Euclidean, translatePoint ialah fungsi yang menggerakkan titik tertentu pada jarak tetap dalam arah tertentu. Oleh itu pelaksanaan dalam TypeScript adalah seperti berikut:
type Set<t> = (x: T) => boolean </t>
di mana (deltax, deltay) ialah vektor malar terjemahan.
Biar terjemah menjadi fungsi yang menterjemah set dalam pesawat. Fungsi ini hanya dilaksanakan seperti berikut dalam TypeScript:
Empty(x) = false if x is in E Empty(x) = false if x is not in E`terjemah` mengambil sebagai parameter `deltax` iaitu jarak delta dalam dimensi Euclidean pertama dan `deltay` iaitu jarak delta dalam dimensi Euclidean kedua. Jika titik _P (x, y)_ diterjemahkan dalam set _S_, maka koordinatnya akan berubah kepada _(x', y') = (x, delatx, y, deltay)_. Oleh itu, titik _(x' - delatx, y' - deltay)_ akan sentiasa tergolong dalam set _S_. Dalam algebra set, `terjemah` dipanggil isomorf, dengan kata lain, set semua terjemahan membentuk _kumpulan terjemahan T_, yang isomorfik kepada ruang itu sendiri. Ini menerangkan logik utama fungsi. Oleh itu, jalankan kod di bawah dalam halaman HTML5 kami:
const empty = () => (e: T) => false
di mana ep_op ialah id kanvas:
console.log('\nEmpty set:') console.log('Is 7 in {}?', common.empty()(7))
memberi keputusan berikut:
Homoteti
Biar scalePoint menjadi fungsi yang menghantar sebarang titik M ke titik lain N supaya segmen SN berada pada baris yang sama dengan SM , tetapi diskalakan oleh faktor λ. Dalam algebra set, Skala dirumus seperti berikut:
Oleh itu pelaksanaan dalam TypeScript adalah seperti berikut:
npm install
di mana (deltax, deltay) ialah vektor malar terjemahan dan (lambdax, lambday) ialah vektor lambda.
Biar skala sebagai fungsi yang menggunakan homotheti pada set dalam pelan. Fungsi ini hanya dilaksanakan seperti berikut dalam TypeScript:
npm run numbers
skala diambil sebagai parameter deltax iaitu jarak delta dalam dimensi Euclidean pertama, deltay iaitu jarak delta dalam dimensi Euclidean kedua dan (lambdax, lambday) iaitu vektor faktor malar λ. Jika titik P (x, y) diubah melalui skala dalam set S, maka koordinatnya akan bertukar kepada (x', y') = (lambdax * x, delatx, lambday * y, deltay). Oleh itu, titik ((x'- delatx)/lambdax, (y' - deltay)/lambday) akan sentiasa tergolong dalam set S, Jika lambda berbeza daripada vektor 0, sudah tentu. Dalam algebra set, skala dipanggil isomorf, dengan kata lain, set semua homotheti membentuk kumpulan Homothety H, iaitu isomorfik kepada ruang itu sendiri {0}. Ini menerangkan logik utama fungsi.
Oleh itu, jalankan kod di bawah dalam halaman HTML5 kami:
npm run plane
memberi keputusan berikut:
Putar
Biar rotatePoint sebagai fungsi yang memutarkan titik dengan sudut θ. Dalam algebra matriks, rotatePoint dirumuskan seperti berikut:
di mana (x', y') ialah koordinat titik selepas putaran, dan formula untuk x' dan y' ialah seperti berikut:
Demonstrasi formula ini sangat mudah. Sila lihat putaran ini.
Di bawah demonstrasi:
Oleh itu pelaksanaan dalam TypeScript adalah seperti berikut:
npm install
Biar putar menjadi fungsi yang menggunakan putaran pada set dalam satah dengan sudut θ. Fungsi ini hanya dilaksanakan seperti berikut dalam TypeScript.
npm run numbers
putar ialah fungsi yang mengambil sebagai parameter theta iaitu sudut putaran. Jika titik P (x, y) diubah melalui putaran dalam set S, maka koordinatnya akan bertukar kepada (x', y') = (x * cos(theta) - y * sin(theta), x * sin(theta), y * cos(theta)). Oleh itu, titik (x' * cos(theta), y' * sin(theta), y' * cos(theta) - x' * sin(theta)) akan sentiasa tergolong dalam set S. Dalam algebra set, putaran dipanggil isomorf, dengan kata lain, set semua putaran membentuk Kumpulan putaran R, iaitu isomorfik kepada ruang itu sendiri. Ini menerangkan logik utama fungsi.
Oleh itu, jalankan kod di bawah dalam halaman HTML5 kami:
npm run plane
memberi keputusan berikut:
Bagi Mereka Yang Ingin Melangkah Lebih Jauh
Sangat mudah, bukan? Bagi mereka yang ingin pergi lebih jauh, anda boleh meneroka ini:
- Ellipse
- Ruang Euclidean tiga dimensi
- Ellipsoide
- Paraboloid
- Hiperboloid
- Harmonik sfera
- Superellipsoid
- Haumea
- Homoeoid
- Focaloid
Fraktal
Fraktal ialah set yang mempunyai dimensi fraktal yang biasanya melebihi dimensi topologinya dan mungkin jatuh di antara integer. Sebagai contoh, set Mandelbrot ialah fraktal yang ditakrifkan oleh keluarga polinomial kuadratik kompleks:
npm run fractals
di mana c ialah kompleks. Fraktal Mandelbrot ditakrifkan sebagai set semua titik c supaya jujukan di atas tidak terlepas ke infiniti. Dalam algebra set, ini dirumuskan seperti berikut:
Fraktal (jenis data abstrak) sentiasa boleh diwakili seperti berikut dalam TypeScript:
S'(x) = true if x is in S' S'(x) = false if x is not in S'
Nombor Kompleks dan Lukisan
Untuk dapat melukis fraktal, saya perlu memanipulasi nombor Kompleks. Oleh itu, saya mencipta kelas Kompleks di bawah:
S'(a) = S'(b) = true S'(c) = S'(d) = false
Fraktal Mandelbrot
Saya mencipta Fraktal Mandelbrot (perwakilan jenis data abstrak) P(z) = z^2 c yang tersedia di bawah.
npm installUntuk dapat melukis nombor _Complex_, saya mencipta kelas `ComplexPlane`. Di bawah ialah pelaksanaan dalam TypeScript.
npm run numbers
Oleh itu, jalankan kod di bawah:
npm run plane
di mana fraktal ialah id kanvas:
npm run fractals
memberi keputusan berikut:
Bagi Mereka Yang Ingin Melangkah Lebih Jauh
Bagi mereka yang ingin pergi lebih jauh, anda boleh meneroka ini:
- Fraktal Newton
- Julia Fractals
- Fraktal Lain
Itu sahaja! Saya harap anda seronok membaca.
Atas ialah kandungan terperinci Pengaturcaraan Fungsional dalam TypeScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Memahami bagaimana enjin JavaScript berfungsi secara dalaman adalah penting kepada pemaju kerana ia membantu menulis kod yang lebih cekap dan memahami kesesakan prestasi dan strategi pengoptimuman. 1) aliran kerja enjin termasuk tiga peringkat: parsing, penyusun dan pelaksanaan; 2) Semasa proses pelaksanaan, enjin akan melakukan pengoptimuman dinamik, seperti cache dalam talian dan kelas tersembunyi; 3) Amalan terbaik termasuk mengelakkan pembolehubah global, mengoptimumkan gelung, menggunakan const dan membiarkan, dan mengelakkan penggunaan penutupan yang berlebihan.

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

Aplikasi JavaScript di dunia nyata termasuk pengaturcaraan sisi pelayan, pembangunan aplikasi mudah alih dan Internet of Things Control: 1. Pengaturcaraan sisi pelayan direalisasikan melalui node.js, sesuai untuk pemprosesan permintaan serentak yang tinggi. 2. Pembangunan aplikasi mudah alih dijalankan melalui reaktnatif dan menyokong penggunaan silang platform. 3. Digunakan untuk kawalan peranti IoT melalui Perpustakaan Johnny-Five, sesuai untuk interaksi perkakasan.

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing

Artikel ini menunjukkan integrasi frontend dengan backend yang dijamin oleh permit, membina aplikasi edtech SaaS yang berfungsi menggunakan Next.Js. Frontend mengambil kebenaran pengguna untuk mengawal penglihatan UI dan memastikan permintaan API mematuhi dasar peranan


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

EditPlus versi Cina retak
Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod