Haskell: Perbedaan antara revisi
Konten dihapus Konten ditambahkan
k Bot: Penggantian teks otomatis (-Pranala Luar +Pranala luar) |
Perbaikan pranala Tag: Suntingan perangkat seluler Suntingan peramban seluler Suntingan seluler lanjutan |
||
(13 revisi perantara oleh 8 pengguna tidak ditampilkan) | |||
Baris 1:
{{Infobox programming language
| name
| logo
| paradigm
| year
| designer =
| developer =
| latest release version =
| latest release date
| latest test version
| latest test date =
| typing
| implementations
| dialects
| influenced
|first1 = Paul
|last1 = Hudak
Baris 32:
|pages = 12–1–12–55
|isbn = 978-1-59593-766-X {{Please check ISBN|reason=Check digit (X) does not correspond to calculated figure.}}
}}</ref> [[Clojure]],<ref>{{cite web|url=http://www.amazon.com/gp/richpub/listmania/fullview/R3LG3ZBZS4GCTH|title=Clojure Bookshelf|last=Hickey|first=Rich|work=Listmania!|publisher=Amazon.com|accessdate=9 February 2012|archive-date=2012-03-19|archive-url=https://web.archive.org/web/20120319065828/http://www.amazon.com/Clojure-Bookshelf/lm/R3LG3ZBZS4GCTH|dead-url=no}}</ref> [[CoffeeScript]],<ref>{{cite news|url=http://www.javaworld.com/javaworld/jw-10-2011/111018-coffeescript-vs-dart.html|title=Turn up your nose at Dart and smell the CoffeeScript|last=Heller|first=Martin|date=18 October 2011|work=JavaWorld|publisher=InfoWorld|accessdate=9 February 2012|archive-date=2012-02-10|archive-url=https://web.archive.org/web/20120210141629/http://www.javaworld.com/javaworld/jw-10-2011/111018-coffeescript-vs-dart.html|dead-url=yes}}</ref> [[Curry (programming language)|Curry]],{{Citation needed|date=February 2012}} [[Epigram (programming language)|Epigram]],{{Citation needed|date=February 2012}} [[Escher (programming language)|Escher]],{{Citation needed|date=February 2012}} [[F Sharp (programming language)|F#]],<ref>{{cite book|last1=Syme|first1=Don|authorlink1=Don Syme|last2=Granicz|first2=Adam|last3=Cisternino|first3=Antonio|title=Expert F#|year=2007|publisher=[[Apress]]|page=2|quote=F# also draws from Haskell particularly with regard to two advanced language features called ''sequence expressions'' and ''workflows''.}}</ref> [[Factor (
| influenced by
| operating system
| license =
| website
| file ext
}}
'''Haskell''' adalah bahasa [[Pemrograman Fungsional|pemrograman fungsional]] murni. Nama bahasa pemrograman Haskell diambil dari nama seseorang matematikawan [[Haskell Curry]], yang terkenal akan karyanya di bidang ''combinatory logic''. Haskell hanya mengenal ''expression'' dan ''equation''.
[[Semantika (linguistika)|Semantik]] Haskell secara historis didasarkan pada bahasa pemrograman Miranda, yang berfungsi untuk memfokuskan upaya kelompok kerja Haskell awal.<ref>Edward Kmett, [https://www.youtube.com/watch?v=hIZxTQP1ifo Edward Kmett – Type Classes vs. the World]</ref> Spesifikasi formal terakhir dari bahasa tersebut dibuat pada bulan Juli 2010, sementara pengembangan GHC terus memperluas Haskell melalui ekstensi bahasa.
Haskell digunakan dalam akademi dan industri.<ref>{{Citation|last=Mossberg|first=Erik|title=erkmos/haskell-companies|date=2020-06-08|url=https://github.com/erkmos/haskell-companies|access-date=2020-06-22}}</ref><ref>{{cite book|last1=O'Sullivan|first1=Bryan|last2=Goerzen|first2=John|last3=Stewart|first3=Donald Bruce|date=15 November 2008|url=https://books.google.com/books?id=nh0okI1a1sQC|title=Real World Haskell: Code You Can Believe In|publisher="O'Reilly Media, Inc."|isbn=978-0-596-55430-9|pages=xxviii-xxxi|language=en}}</ref><ref>{{cite web|title=Haskell in Production: Riskbook|url=https://serokell.io/blog/haskell-in-industry-riskbook|website=Serokell Software Development Company|language=en|access-date=2021-09-07}}</ref> {{As of|2021|May}}, Haskell adalah bahasa pemrograman terpopuler ke-28 menurut [[Google Search|Google Pencarian]] untuk tutorial,<ref>{{cite web|last=|first=|date=May 2021|title=PYPL PopularitY of Programming Language index|url=http://pypl.github.io/PYPL.html|website=pypl.github.io|language=en|archive-url=https://web.archive.org/web/20210507222106/https://pypl.github.io/PYPL.html|archive-date=7 May 2021|access-date=16 May 2021|url-status=dead}}</ref> dan berjumlah kurang dari 1% pengguna aktif di repositori kode sumber [[GitHub]].<ref>{{cite web|last=Frederickson|first=Ben|title=Ranking Programming Languages by GitHub Users|url=https://www.benfrederickson.com/ranking-programming-languages-by-github-users/|website=www.benfrederickson.com|access-date=6 September 2019}}</ref>
== Sejarah ==
Setelah perilisan [[Miranda (bahasa pemrograman)|Miranda]] oleh Research Software Ltd. pada tahun 1985, minat terhadap bahasa fungsional yang malas tumbuh. Pada tahun 1987, ada lebih dari selusin bahasa pemrograman yang tidak [[Fungsi ketat|ketat]] dan murni fungsional. Miranda merupakan yang paling banyak digunakan, tapi itu adalah [[perangkat lunak berpemilik]]. Pada konferensi [[Functional Programming Languages and Computer Architecture]] (FPCA '87) di [[Portland, Oregon]], ada konsensus yang kuat bahwa sebuah komite dibentuk untuk menentukan [[standar terbuka]] untuk bahasa-bahasa tersebut. Tujuan komite ini adalah untuk menggabungkan bahasa-[[Pemrograman fungsional|bahasa fungsional]] yang ada menjadi bahasa yang umum untuk digunakan sebagai dasar pengmebangan masa depan dalam desain bahasa fungsional.{{sfn|Peyton Jones|2003|loc=Preface}}
=== Standar mendatang ===
Spesifikasi formal berikutnya telah direncanakan untuk tahun 2020.<ref name="2020committee" /> Pada 29 Oktober 2021, dengan versi GHC 9.2.1, ekstensi GHC2021 dirilis. Meskipun ini bukan spesifikasi bahasa formal, ini menggabungkan sejumlah ekstensi GHC yang stabil dan banyak digunakan pada Haskell 2010.<ref name="ghc9,2,1">GHC 2020 Team (29 October 2021) [https://downloads.haskell.org/~ghc/9.2.1/docs/html/users_guide/9.2.1-notes.html GHC 9.2.1] released</ref><ref>[https://github.com/ghc-proposals/ghc-proposals Proposed compiler and language changes for GHC and GHC/Haskell ]</ref>
== Fitur ==
{{Main|Fitur Haskell}}{{See also|Compiler Glasgow Haskell#Ekstensi ke Haskell}}
Haskell menyediakan [[evaluasi malas]], [[Fungsi anonim|ekspresi lambda]], [[pencocokan pola]], [[pemahaman daftar]], [[tipe kelas]], dan [[Polimorfisme (ilmu komputer)|polimorfisme tipe]]. Ini adalah bahasa pemrograman yang [[Pemrograman yang murni fungsional|murni fungsional]], yang berarti bahwa fungsi pada umumnya tidak mempunyai [[Efek samping (ilmu komputer)|efek samping]]. Ada konstruksi berbeda untuk mewakili efek samping, [[Ortogonalitas#ilmu komputer|ortogonal]] terhadap jenis fungsinya. Sebuah fungsi murni dapat mengembalikan sebuah efek samping yang kemudian dieksekusi, memodelkan fungsi [[Fungsi murni# Fungsi tidak murni|tidak murni]] dari bahasa lain.
Haskell memiliki sistem tipe [[Tipe sistem# Pengetikan statis|statis]] yang [[Pengetikan kuat dan lemah|kuat]] berdasarkan [[inferensi jenis Hindley – Milner]]. Inovasi utamanya dalam bidang ini adalah kelas tipe, yang awalnya dipahami sebagai cara berprinsip untuk menambah [[Polimorfisme (ilmu komputer)|beban berlebih]] pada bahasa,<ref name="wadler89">{{cite book|last1=Wadler|first1=P.|last2=Blott|first2=S.|year=1989|title=Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages - POPL '89|publisher=[[Association for Computing Machinery|ACM]]|isbn=978-0-89791-294-5|pages=60–76|chapter=How to make ad-hoc polymorphism less ad hoc|doi=10.1145/75277.75283|doi-access=free|s2cid=15327197}}</ref> tetapi telah menemukan banyak pengguna baru.<ref name="hallgren01">{{cite journal|last=Hallgren|first=T.|date=January 2001|title=Fun with Functional Dependencies, or Types as Values in Static Computations in Haskell|url=http://www.cs.chalmers.se/~hallgren/Papers/wm01.html|journal=Proceedings of the Joint CS/CE Winter Meeting|location=Varberg, Sweden}}</ref>
Terdapat komunitas yang aktif dan berkembang seputar bahasa ini, dan lebih dari 5.400 perpustakaan dan alat sumber terbuka pihak ketiga tersedia di repositori paket daring ''Hackage''.<ref name="hackage-stats">{{cite web|title=HackageDB statistics|url=http://hackage.haskell.org/cgi-bin/hackage-scripts/stats|publisher=Hackage.haskell.org|archive-url=https://web.archive.org/web/20130503114836/http://hackage.haskell.org/cgi-bin/hackage-scripts/stats|archive-date=3 May 2013|access-date=26 June 2013}}</ref>
== Contoh ==
Baris 45 ⟶ 63:
=== Hello World ===
Berikut ini adalah contoh program sederhana yang akan mencetak kalimat "Hello, World!".
<
main = putStrLn "Hello, world!"
</
=== Penjumlahan
Berikut ini adalah contoh program sederhana yang akan mencetak hasil penjumlahan antara 2 dan 10.<syntaxhighlight lang="haskell">
main = print (2 + 10)
</syntaxhighlight>
=== Cetak
Berikut ini adalah contoh program sederhana yang akan meminta nama pengguna dan mencetaknya kembali.<syntaxhighlight lang="haskell" line="1">
main = do
Baris 61 ⟶ 79:
putStrLn ("Selamat datang, " ++ nama ++ "!")
</syntaxhighlight>
== Penggunaan terkenal ==
* Asisten pembuktian [[Agda (bahasa pemrograman)|Agda]] ditulis dalam Haskell.<ref>{{Citation|title=Agda 2|date=2021-10-15|url=https://github.com/agda/agda|publisher=Agda Github Community|access-date=2021-10-16}}</ref>
* [[Cabal (software)|Cabal]] adalah sebuah alat untuk [[Otomasi pembuatan|membuat]] dan mengemas program dan pustaka Haskell.<ref>{{cite web|title=The Haskell Cabal|url=https://www.haskell.org/cabal/|access-date=8 April 2015}}</ref>
* [[Darcs]] adalah sistem kontrol revisi yang ditulis dalam Haskell, dengan beberapa fitur inovatif, seperti kontrol ''patch'' yang akan diterapkan lebih tepat.
* [[Glasgow Haskell Compiler]] (GHC) juga sering kali menjadi tempat uji coba untuk fitur pemrograman fungsional tingkat lanjut dan pengoptimalan dalam bahasa pemrograman lain.
* [[Git-annex]] adalah sebuah alat untuk mengatur berkas data (besar) di bawah kontrol versi [[Git]]. It also provides a distributed file synchronization system (git-annex assistant).
* [[Linspire]] Linux memilih Haskell untuk pengembangan alat sistem.<ref>{{cite web|date=May 2006|title=Linspire/Freespire Core OS Team and Haskell|url=http://urchin.earth.li/pipermail/debian-haskell/2006-May/000169.html|work=Debian Haskell mailing list|archive-url=https://web.archive.org/web/20171227234048/http://urchin.earth.li/pipermail/debian-haskell/2006-May/000169.html|archive-date=27 December 2017|access-date=14 June 2006|url-status=dead}}</ref>
* [[Pandoc]] adalah alat untuk mengubah satu format ''markup'' ke format ''markup'' lainnya.
* [[Pugs (compiler)|Pugs]] adalah [[Compiler|kompilator]] dan [[Interpreter|penerjemah]] untuk bahasa pemrograman yang kemudian diberi nama [[Perl]] 6, namun sejak berganti nama [[Raku (bahasa pemrograman)|Raku]].
=== Web ===
[[Kerangka web]] terkenal yang ditulis untuk Haskell termasuk:<ref>{{cite web|title=Web/Frameworks – HaskellWiki|url=https://wiki.haskell.org/Web/Frameworks|website=wiki.haskell.org|access-date=17 September 2022}}</ref>
* IHP
* [[Servant (Kerangka kerja web)|Servant]]
* [[Snap (Kerangka kerja web)|Snap]]
* [[Yesod (Kerangka kerja web)|Yesod]]
== Referensi ==
{{reflist}}
== Pranala luar ==
Baris 66 ⟶ 106:
{{Wikibooks|Write Yourself a Scheme in 48 Hours}}
* {{Official website|http://haskell.org}}
* [http://www.haskell.org/haskellwiki/Language_and_library_specification Language and library specification] {{Webarchive|url=https://web.archive.org/web/20150102195106/https://www.haskell.org/haskellwiki/Language_and_library_specification |date=2015-01-02 }} at the Haskell Wiki
* {{dmoz|Computers/Programming/Languages/Haskell|Haskell}}
; Various
* [http://www.willamette.edu/~fruehr/haskell/evolution.html The Evolution of a Haskell Programmer] {{Webarchive|url=https://web.archive.org/web/20070101192126/http://www.willamette.edu/~fruehr/haskell/evolution.html |date=2007-01-01 }}, slightly humorous overview of different programming styles available in Haskell
* [http://haskell.readscheme.org/ Online Bibliography of Haskell Research] {{Webarchive|url=https://web.archive.org/web/20080915054919/http://haskell.readscheme.org/ |date=2008-09-15 }}
* [http://contemplatecode.blogspot.com/search/label/HWN Haskell Weekly News] {{Webarchive|url=https://web.archive.org/web/20230519125853/http://contemplatecode.blogspot.com/search/label/HWN |date=2023-05-19 }}
* [http://themonadreader.wordpress.com/ The Monad.Reader] {{Webarchive|url=https://web.archive.org/web/20230608031832/https://themonadreader.wordpress.com/ |date=2023-06-08 }}, quarterly magazine on Haskell topics
* {{cite podcast|url=http://www.se-radio.net/2008/08/episode-108-simon-peyton-jones-on-functional-programming-and-haskell/ |title=Episode 108: Simon Peyton Jones on Functional Programming and Haskell |website=Software Engineering Radio |host=Markus |date=29 August 2008}}
* [http://leksah.org/ Leksah] {{Webarchive|url=https://web.archive.org/web/20120513234524/http://leksah.org/ |date=2012-05-13 }}, a GTK-based Haskell IDE written in Haskell
;Tutorials
* [http://tryhaskell.org/ Try Haskell!] {{Webarchive|url=https://web.archive.org/web/20230802163743/https://tryhaskell.org/ |date=2023-08-02 }}, an in-browser interactive tutorial
* [http://hal3.name/docs/daume02yaht.pdf Yet Another Haskell Tutorial] {{Webarchive|url=https://web.archive.org/web/20100415154045/http://hal3.name/docs/daume02yaht.pdf |date=2010-04-15 }}, by Hal Daumé III; assumes far less prior knowledge than official tutorial
* [http://cheatsheet.codeslower.com/ The Haskell Cheatsheet] {{Webarchive|url=https://web.archive.org/web/20230815210229/http://cheatsheet.codeslower.com/ |date=2023-08-15 }}, compact language reference and mini-tutorial
{{Daftar bahasa pemrograman}}
{{stub}}▼
{{Authority control}}
[[Kategori:Bahasa pemrograman]]
[[Kategori:Perangkat lunak bebas]]
▲{{stub}}
|