Lompat ke isi

Haskell: Perbedaan antara revisi

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
Konten dihapus Konten ditambahkan
Tidak ada ringkasan suntingan
Tag: Suntingan perangkat seluler Suntingan peramban seluler
 
(4 revisi perantara oleh 4 pengguna tidak ditampilkan)
Baris 1: Baris 1:
{{distinguish|Honeywell}}
{{Infobox programming language
{{Infobox programming language
|name = Haskell
| name = Haskell
|logo = [[Berkas:Haskell-Logo.svg|120px|Logo of Haskell]]
| logo = [[Berkas:Haskell-Logo.svg|120px|Logo of Haskell]]
|paradigm = [[functional programming|functional]], lazy/[[non-strict programming language|non-strict]], [[modular programming|modular]]
| paradigm = [[pemrograman fungsional|Fungsional]], malas/[[bahasa pemrograman tidak ketat|tidak ketat]], [[pemrograman modular|modular]]
|year = 1990
| year = 1990
|designer = [[Simon Peyton Jones]], [[Lennart Augustsson]], [[Dave Barton]], [[Brian Boutel]], [[Warren Burton (computer scientist)|Warren Burton]], [[Joseph Fasel]], [[Kevin Hammond (computer scientist)|Kevin Hammond]], [[Ralf Hinze]], [[Paul Hudak]], [[John Hughes (computer scientist)|John Hughes]], [[Thomas Johnsson]], [[Mark Jones (computer scientist)|Mark Jones]], [[John Launchbury]], [[Erik Meijer (computer scientist)|Erik Meijer]], [[John Peterson (computer scientist)|John Peterson]], [[Alastair Reid (computer scientist)|Alastair Reid]], [[Colin Runciman]], [[Philip Wadler]]
| designer = [[Lennart Augustsson]], Dave Barton, Brian Boutel, Warren Burton, Joseph Fasel, Kevin Hammond, Ralf Hinze, [[Paul Hudak]], [[John Hughes (ilmuan komputer)|John Hughes]], Thomas Johnsson, Mark Jones, [[Simon Peyton Jones]], [[John Launchbury]], [[Erik Meijer (ilmuan komputer)|Erik Meijer]], John Peterson, Alastair Reid, Colin Runciman, [[Philip Wadler]]
|developer =
| developer =
|latest release version = <!-- Of the language specification, not the [[Haskell Platform]]! -->Haskell 2010<ref name="2010ann">{{cite mailing list|url=http://www.haskell.org/pipermail/haskell/2009-November/021750.html|title=Announcing Haskell 2010|date=24 November 2009|accessdate=12 March 2011|mailinglist=Haskell|last=Marlow|first=Simon}}</ref>
| latest release version = {{cite mailing list|url=http://www.haskell.org/pipermail/haskell/2009-November/021750.html|title=Announcing Haskell 2010|date=24 November 2009|accessdate=12 March 2011|mailinglist=Haskell|last=Marlow|first=Simon}}</ref>
|latest release date = {{start date and age|df=yes|2010|07}}
| latest release date = {{start date and age|df=yes|2010|07}}
|latest test version = Haskell 2011{{Citation needed|date=June 2011}}
| latest test version = Haskell 2011{{Citation needed|date=June 2011}}
|latest test date =
| latest test date =
|typing = [[static typing|static]], [[strong typing|strong]], [[type inference|inferred]]
| typing = [[pengetikan statis|Statis]], [[pengetikan kuat|kuat]], [[pengetikan disimpulkan|disimpulkan]]
|implementations = [[Glasgow Haskell Compiler|GHC]], [[Hugs]], [http://www.cs.york.ac.uk/fp/nhc98/ NHC], [http://repetae.net/john/computer/jhc/ JHC], [[Yhc]], [http://www.cs.uu.nl/wiki/UHC UHC]
| implementations = [[Glasgow Haskell Compiler|GHC]], [[Hugs]], [http://www.cs.york.ac.uk/fp/nhc98/ NHC], [http://repetae.net/john/computer/jhc/ JHC], [[Yhc]], [http://www.cs.uu.nl/wiki/UHC UHC]
|dialects = [[Helium (Haskell)|Helium]], [[Gofer (software)|Gofer]], [[Hugs]], [[Ωmega]]
| dialects = [[Helium (Haskell)|Helium]], [[Gofer (perangkat lunak)|Gofer]], [[Hugs]], [[Ωmega]]
|influenced = [[Agda (theorem prover)|Agda]],<ref>{{cite web|url=http://www.cse.chalmers.se/~ulfn/papers/afp08/tutorial.pdf|title=Dependently Typed Programming in Agda|last=Norell|first=Ulf|year=2008|publisher=Chalmers University|accessdate=9 February 2012|location=Gothenburg}}</ref> [[Bluespec, Inc.|Bluespec]],{{Citation needed|date=February 2012}} [[C++11]]/[[Concepts (C++)|Concepts]],<ref>{{cite journal|title=Design of Concept Libraries for C++|first1=Bjarne|last1=Stroustrup|authorlink1=Bjarne Stroustrup|first2=Andrew|last2=Sutton|url=http://www2.research.att.com/~bs/sle2011-concepts.pdf|year=2011|archiveurl=https://web.archive.org/web/20110825052517/http://www2.research.att.com/~bs/sle2011-concepts.pdf|archivedate=2011-08-25|journal=|access-date=2021-02-21|dead-url=yes}}</ref> [[C Sharp (programming language)|C#]]/[[Language Integrated Query|LINQ]],<ref>{{cite web|url=http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1/|title=C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals, Chapter 1 of 13|last=Meijer|first=Erik|date=1 October 2009|work=[[Channel 9 (discussion forum)|Channel 9]]|publisher=Microsoft|accessdate=9 February 2012|archive-date=2012-06-16|archive-url=https://web.archive.org/web/20120616051226/http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1/|dead-url=yes}}</ref><ref>{{cite news|url=http://www.infoq.com/interviews/LINQ-Erik-Meijer|title=Erik Meijer on LINQ|last=Drobi|first=Sadek|date=4 March 2009|work=InfoQ|publisher=C4Media Inc.|accessdate=9 February 2012|location=QCon [[San Francisco|SF]] 2008}}</ref> [[CAL (Quark Framework)|CAL]],{{Citation needed|date=February 2012}} [[Cayenne (programming language)|Cayenne]],{{Citation needed|date=February 2012}} [[Clean (programming language)|Clean]],<ref>{{cite journal
| influenced = [[Agda (theorem prover)|Agda]],<ref>{{cite web|url=http://www.cse.chalmers.se/~ulfn/papers/afp08/tutorial.pdf|title=Dependently Typed Programming in Agda|last=Norell|first=Ulf|year=2008|publisher=Chalmers University|accessdate=9 February 2012|location=Gothenburg|archive-date=2014-04-01|archive-url=https://web.archive.org/web/20140401144502/http://www.cse.chalmers.se/~ulfn/papers/afp08/tutorial.pdf|dead-url=no}}</ref> [[Bluespec, Inc.|Bluespec]],{{Citation needed|date=February 2012}} [[C++11]]/[[Concepts (C++)|Concepts]],<ref>{{cite journal|title=Design of Concept Libraries for C++|first1=Bjarne|last1=Stroustrup|authorlink1=Bjarne Stroustrup|first2=Andrew|last2=Sutton|url=http://www2.research.att.com/~bs/sle2011-concepts.pdf|year=2011|archiveurl=https://web.archive.org/web/20110825052517/http://www2.research.att.com/~bs/sle2011-concepts.pdf|archivedate=2011-08-25|journal=|access-date=2021-02-21|dead-url=yes}}</ref> [[C Sharp (bahasa pemrograman)|C#]]/[[Language Integrated Query|LINQ]],<ref>{{cite web|url=http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1/|title=C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals, Chapter 1 of 13|last=Meijer|first=Erik|date=1 October 2009|work=[[Channel 9 (discussion forum)|Channel 9]]|publisher=Microsoft|accessdate=9 February 2012|archive-date=2012-06-16|archive-url=https://web.archive.org/web/20120616051226/http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1/|dead-url=yes}}</ref><ref>{{cite news|url=http://www.infoq.com/interviews/LINQ-Erik-Meijer|title=Erik Meijer on LINQ|last=Drobi|first=Sadek|date=4 March 2009|work=InfoQ|publisher=C4Media Inc.|accessdate=9 February 2012|location=QCon [[San Francisco|SF]] 2008|archive-date=2021-01-26|archive-url=https://web.archive.org/web/20210126191443/https://www.infoq.com/interviews/LINQ-Erik-Meijer/|dead-url=no}}</ref> [[CAL (Kerangka kerja Quark)|CAL]],{{Citation needed|date=February 2012}} [[Cayenne (bahasa pemrograman)|Cayenne]],{{Citation needed|date=February 2012}} [[Clean (programming language)|Clean]],<ref>{{cite journal
|first1 = Paul
|first1 = Paul
|last1 = Hudak
|last1 = Hudak
Baris 33: Baris 32:
|pages = 12–1–12–55
|pages = 12–1–12–55
|isbn = 978-1-59593-766-X {{Please check ISBN|reason=Check digit (X) does not correspond to calculated figure.}}
|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}}</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 (programming language)|Factor]],{{Citation needed|date=February 2012}} [[Isabelle theorem prover|Isabelle]],{{Citation needed|date=February 2012}} [[Generics in Java|Java Generics]],{{Citation needed|date=February 2012}} [[Kaya (programming language)|Kaya]],{{Citation needed|date=February 2012}} [[Mercury (programming language)|Mercury]],{{Citation needed|date=February 2012}} [[Ωmega interpreter|Omega]],{{Citation needed|date=February 2012}} [[Perl 6]],<ref>{{cite web|url=http://www.perlfoundation.org/perl6/index.cgi?glossary_of_terms_and_jargon|title=Glossary of Terms and Jargon|date=28 February|work=Perl Foundation Perl 6 Wiki|publisher=[[The Perl Foundation]]|accessdate=9 February 2012|archive-date=2012-01-21|archive-url=https://web.archive.org/web/20120121145808/http://www.perlfoundation.org/perl6/index.cgi?glossary_of_terms_and_jargon|dead-url=yes}}</ref> [[Python (programming language)|Python]],<ref>{{cite web|url=http://docs.python.org/howto/functional.html|title=Functional Programming HOWTO|last=Kuchling|first=A. M.|work=Python v2.7.2 documentation|publisher=Python Software Foundation|accessdate=9 February 2012}}</ref> [[Qi (programming language)|Qi]],{{Citation needed|date=February 2012}} [[Scala (programming language)|Scala]],<ref>{{cite web|url=http://blog.fogus.me/2010/08/06/martinodersky-take5-tolist/|title=MartinOdersky take(5) toList|last=Fogus|first=Michael|date=6 August 2010|work=Send More Paramedics|accessdate=9 February 2012}}</ref> [[Timber (programming language)|Timber]],{{Citation needed|date=February 2012}} [[Visual Basic .NET|Visual Basic 9.0]]<ref>[[Erik Meijer (computer scientist)|Erik Meijer]], "Confessions of a Used Programming Language Salesman",[https://web.archive.org/web/20110923133552/http://research.microsoft.com/en-us/um/people/emeijer/papers/es012-meijer.pdf] [[OOPSLA]] 2007</ref>
}}</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 (bahasa pemrograman)|Factor]],{{Citation needed|date=February 2012}} [[Isabelle theorem prover|Isabelle]],{{Citation needed|date=February 2012}} [[Generics in Java|Java Generics]],{{Citation needed|date=February 2012}} [[Kaya (bahasa pemrograman)|Kaya]],{{Citation needed|date=February 2012}} [[Mercury (bahasa pemrograman)|Mercury]],{{Citation needed|date=February 2012}} [[interpretasi Ωmega|Omega]],{{Citation needed|date=February 2012}} [[Perl 6]],<ref>{{cite web|url=http://www.perlfoundation.org/perl6/index.cgi?glossary_of_terms_and_jargon|title=Glossary of Terms and Jargon|date=28 February|work=Perl Foundation Perl 6 Wiki|publisher=[[The Perl Foundation]]|accessdate=9 February 2012|archive-date=2012-01-21|archive-url=https://web.archive.org/web/20120121145808/http://www.perlfoundation.org/perl6/index.cgi?glossary_of_terms_and_jargon|dead-url=yes}}</ref> [[Python (bahasa pemrograman)|Python]],<ref>{{cite web|url=http://docs.python.org/howto/functional.html|title=Functional Programming HOWTO|last=Kuchling|first=A. M.|work=Python v2.7.2 documentation|publisher=Python Software Foundation|accessdate=9 February 2012|archive-date=2012-10-24|archive-url=https://web.archive.org/web/20121024163217/http://docs.python.org/howto/functional.html|dead-url=no}}</ref> [[Qi (bahasa pemrograman)|Qi]],{{Citation needed|date=February 2012}} [[Scala (bahasa pemrograman)|Scala]],<ref>{{cite web|url=http://blog.fogus.me/2010/08/06/martinodersky-take5-tolist/|title=MartinOdersky take(5) toList|last=Fogus|first=Michael|date=6 August 2010|work=Send More Paramedics|accessdate=9 February 2012|archive-date=2012-02-14|archive-url=https://web.archive.org/web/20120214225555/http://blog.fogus.me/2010/08/06/martinodersky-take5-tolist/|dead-url=no}}</ref> [[Timber (programming language)|Timber]],{{Citation needed|date=February 2012}} [[Visual Basic .NET|Visual Basic 9.0]]<ref>[[Erik Meijer (computer scientist)|Erik Meijer]], "Confessions of a Used Programming Language Salesman",[https://web.archive.org/web/20110923133552/http://research.microsoft.com/en-us/um/people/emeijer/papers/es012-meijer.pdf] [[OOPSLA]] 2007</ref>
|influenced by = [[APL (programming language)|APL]],{{Citation needed|date=February 2012}} [[Clean (programming language)|Clean]],<ref name="haskell-report-influences"/> [[FP (programming language)|FP]],<ref name="haskell-report-influences"/> [[Gofer (programming language)|Gofer]],<ref name="haskell-report-influences"/> [[Hope (programming language)|Hope]] and Hope<sup>+</sup>,<ref name="haskell-report-influences"/> [[Id (programming language)|Id]],<ref name="haskell-report-influences"/> [[ISWIM]],<ref name="haskell-report-influences"/> [[Kent Recursive Calculator|KRC]],<ref name="haskell-report-influences"/> [[Lisp (programming language)|Lisp]],<ref name="haskell-report-influences">Haskell 98 Report, p. xi</ref> [[Miranda (programming language)|Miranda]],<ref name="haskell-report-influences"/> [[ML (programming language)|ML]] and [[Standard ML]],<ref name="haskell-report-influences"/> [[Orwell (programming language)|Orwell]], [[SASL (programming language)|SASL]],<ref name="haskell-report-influences"/> [[SISAL]],<ref name="haskell-report-influences"/> [[Scheme (programming language)|Scheme]]<ref name="haskell-report-influences"/>
| influenced by = [[APL (perangkat lunak)|APL]],{{Citation needed|date=February 2012}} [[Clean (perangkat lunak)|Clean]],<ref name="haskell-report-influences"/> [[FP (perangkat lunak)|FP]],<ref name="haskell-report-influences"/> [[Gofer (perangkat lunak)|Gofer]],<ref name="haskell-report-influences"/> [[Hope (perangkat lunak)|Hope]] dan Hope<sup>+</sup>,<ref name="haskell-report-influences"/> [[Id (perangkat lunak)|Id]],<ref name="haskell-report-influences"/> [[ISWIM]],<ref name="haskell-report-influences"/> [[Kent Recursive Calculator|KRC]],<ref name="haskell-report-influences"/> [[Lisp (perangkat lunak)|Lisp]],<ref name="haskell-report-influences">Haskell 98 Report, p. xi</ref> [[Miranda (perangkat lunak)|Miranda]],<ref name="haskell-report-influences"/> [[ML (programming language)|ML]] and [[Standard ML]],<ref name="haskell-report-influences"/> [[Orwell (programming language)|Orwell]], [[SASL (programming language)|SASL]],<ref name="haskell-report-influences"/> [[SISAL]],<ref name="haskell-report-influences"/> [[Scheme (bahasa pemrograman)|Scheme]]<ref name="haskell-report-influences"/>
|operating system = [[Cross-platform]]
| operating system = [[Lintas platform]]
|license =
| license =
|website = {{url|http://haskell.org}}
| website = {{url|http://haskell.org}}
|file ext = <code>.hs</code>, <code>.lhs</code>
| file ext = <code>.hs</code>, <code>.lhs</code>
}}
}}
'''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''.
'''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''.

[[Semantik (ilmu komputer)|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 ==
== Contoh ==
Baris 62: Baris 79:
putStrLn ("Selamat datang, " ++ nama ++ "!")
putStrLn ("Selamat datang, " ++ nama ++ "!")
</syntaxhighlight>
</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 ==
== Referensi ==
Baris 70: Baris 106:
{{Wikibooks|Write Yourself a Scheme in 48 Hours}}
{{Wikibooks|Write Yourself a Scheme in 48 Hours}}
* {{Official website|http://haskell.org}}
* {{Official website|http://haskell.org}}
* [http://www.haskell.org/haskellwiki/Language_and_library_specification Language and library specification] at the Haskell Wiki
* [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}}
* {{dmoz|Computers/Programming/Languages/Haskell|Haskell}}
; Various
; Various
* [http://www.willamette.edu/~fruehr/haskell/evolution.html The Evolution of a Haskell Programmer], slightly humorous overview of different programming styles available in Haskell
* [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://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]
* [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], quarterly magazine on Haskell topics
* [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}}
* {{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
* [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
;Tutorials
* [http://tryhaskell.org/ Try Haskell!], an in-browser interactive tutorial
* [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], by Hal Daumé III; assumes far less prior knowledge than official 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], compact language reference and mini-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}}
{{Daftar bahasa pemrograman}}

{{stub}}
{{Authority control}}
{{Authority control}}


[[Kategori:Bahasa pemrograman]]
[[Kategori:Bahasa pemrograman]]
[[Kategori:Perangkat lunak bebas]]
[[Kategori:Perangkat lunak bebas]]


{{stub}}

Revisi terkini sejak 27 Agustus 2024 06.09

Haskell
Logo of Haskell
ParadigmaFungsional, malas/tidak ketat, modular
Dirancang olehLennart Augustsson, Dave Barton, Brian Boutel, Warren Burton, Joseph Fasel, Kevin Hammond, Ralf Hinze, Paul Hudak, John Hughes, Thomas Johnsson, Mark Jones, Simon Peyton Jones, John Launchbury, Erik Meijer, John Peterson, Alastair Reid, Colin Runciman, Philip Wadler
Rilis perdana1990
Rilis stabil
Marlow, Simon (24 November 2009). "Announcing Haskell 2010". Haskell mailing list. http://www.haskell.org/pipermail/haskell/2009-November/021750.html. Diakses pada 12 March 2011. </ref> / Juli 2010; 14 tahun lalu (2010-07)
Rilis pratayang
Haskell 2011[butuh rujukan]
Tipe sistemStatis, kuat, disimpulkan
Sistem operasiLintas platform
Ekstensi nama berkas.hs, .lhs
Situs webhaskell.org
Repositoriwww.haskell.org
Implementasi utama
Dialek
Helium, Gofer, Hugs, Ωmega
Terpengaruh oleh
APL,[butuh rujukan] Clean,[1] FP,[1] Gofer,[1] Hope dan Hope+,[1] Id,[1] ISWIM,[1] KRC,[1] Lisp,[1] Miranda,[1] ML and Standard ML,[1] Orwell, SASL,[1] SISAL,[1] Scheme[1]
Mempengaruhi
Agda,[2] Bluespec,[butuh rujukan] C++11/Concepts,[3] C#/LINQ,[4][5] CAL,[butuh rujukan] Cayenne,[butuh rujukan] Clean,[6] Clojure,[7] CoffeeScript,[8] Curry,[butuh rujukan] Epigram,[butuh rujukan] Escher,[butuh rujukan] F#,[9] Factor,[butuh rujukan] Isabelle,[butuh rujukan] Java Generics,[butuh rujukan] Kaya,[butuh rujukan] Mercury,[butuh rujukan] Omega,[butuh rujukan] Perl 6,[10] Python,[11] Qi,[butuh rujukan] Scala,[12] Timber,[butuh rujukan] Visual Basic 9.0[13]
Sunting kotak info
Sunting kotak info • L • B
Info templat
Bantuan penggunaan templat ini

Haskell adalah bahasa 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.

Semantik Haskell secara historis didasarkan pada bahasa pemrograman Miranda, yang berfungsi untuk memfokuskan upaya kelompok kerja Haskell awal.[14] 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.[15][16][17] Hingga Mei 2021, Haskell adalah bahasa pemrograman terpopuler ke-28 menurut Google Pencarian untuk tutorial,[18] dan berjumlah kurang dari 1% pengguna aktif di repositori kode sumber GitHub.[19]

Setelah perilisan 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 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-bahasa fungsional yang ada menjadi bahasa yang umum untuk digunakan sebagai dasar pengmebangan masa depan dalam desain bahasa fungsional.[20]

Standar mendatang

[sunting | sunting sumber]

Spesifikasi formal berikutnya telah direncanakan untuk tahun 2020.[21] 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.[22][23]

Haskell menyediakan evaluasi malas, ekspresi lambda, pencocokan pola, pemahaman daftar, tipe kelas, dan polimorfisme tipe. Ini adalah bahasa pemrograman yang murni fungsional, yang berarti bahwa fungsi pada umumnya tidak mempunyai efek samping. Ada konstruksi berbeda untuk mewakili efek samping, ortogonal terhadap jenis fungsinya. Sebuah fungsi murni dapat mengembalikan sebuah efek samping yang kemudian dieksekusi, memodelkan fungsi tidak murni dari bahasa lain.

Haskell memiliki sistem tipe statis yang kuat berdasarkan inferensi jenis Hindley – Milner. Inovasi utamanya dalam bidang ini adalah kelas tipe, yang awalnya dipahami sebagai cara berprinsip untuk menambah beban berlebih pada bahasa,[24] tetapi telah menemukan banyak pengguna baru.[25]

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.[26]

Hello World

[sunting | sunting sumber]

Berikut ini adalah contoh program sederhana yang akan mencetak kalimat "Hello, World!".

    main = putStrLn "Hello, world!"

Penjumlahan sederhana

[sunting | sunting sumber]

Berikut ini adalah contoh program sederhana yang akan mencetak hasil penjumlahan antara 2 dan 10.

    main = print (2 + 10)

Cetak nama

[sunting | sunting sumber]

Berikut ini adalah contoh program sederhana yang akan meminta nama pengguna dan mencetaknya kembali.

    main = do
        putStrLn "Masukan nama Anda:"
        nama <- getLine
        putStrLn ("Selamat datang, " ++ nama ++ "!")

Penggunaan terkenal

[sunting | sunting sumber]
  • Asisten pembuktian Agda ditulis dalam Haskell.[27]
  • Cabal adalah sebuah alat untuk membuat dan mengemas program dan pustaka Haskell.[28]
  • 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.[29]
  • Pandoc adalah alat untuk mengubah satu format markup ke format markup lainnya.
  • Pugs adalah kompilator dan penerjemah untuk bahasa pemrograman yang kemudian diberi nama Perl 6, namun sejak berganti nama Raku.

Kerangka web terkenal yang ditulis untuk Haskell termasuk:[30]

Referensi

[sunting | sunting sumber]
  1. ^ a b c d e f g h i j k l m Haskell 98 Report, p. xi
  2. ^ Norell, Ulf (2008). "Dependently Typed Programming in Agda" (PDF). Gothenburg: Chalmers University. Diarsipkan (PDF) dari versi asli tanggal 2014-04-01. Diakses tanggal 9 February 2012. 
  3. ^ Stroustrup, Bjarne; Sutton, Andrew (2011). "Design of Concept Libraries for C++" (PDF). Diarsipkan dari versi asli (PDF) tanggal 2011-08-25. Diakses tanggal 2021-02-21. 
  4. ^ Meijer, Erik (1 October 2009). "C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals, Chapter 1 of 13". Channel 9. Microsoft. Diarsipkan dari versi asli tanggal 2012-06-16. Diakses tanggal 9 February 2012. 
  5. ^ Drobi, Sadek (4 March 2009). "Erik Meijer on LINQ". InfoQ. QCon SF 2008: C4Media Inc. Diarsipkan dari versi asli tanggal 2021-01-26. Diakses tanggal 9 February 2012. 
  6. ^ Hudak, Paul; Hughes, John; Peyton Jones, Simon; Wadler, Philip (2007). "A history of Haskell: being lazy with class". Proceedings of the third ACM SIGPLAN conference on History of programming languages (HOPL III): 12–1–12–55. doi:10.1145/1238844.1238856. ISBN [[Special:BookSources/978-1-59593-766-X |978-1-59593-766-X [[Kategori:Artikel dengan ISBN salah]]]] Periksa nilai: invalid character |isbn= (bantuan). 
  7. ^ Hickey, Rich. "Clojure Bookshelf". Listmania!. Amazon.com. Diarsipkan dari versi asli tanggal 2012-03-19. Diakses tanggal 9 February 2012. 
  8. ^ Heller, Martin (18 October 2011). "Turn up your nose at Dart and smell the CoffeeScript". JavaWorld. InfoWorld. Diarsipkan dari versi asli tanggal 2012-02-10. Diakses tanggal 9 February 2012. 
  9. ^ Syme, Don; Granicz, Adam; Cisternino, Antonio (2007). Expert F#. Apress. hlm. 2. F# also draws from Haskell particularly with regard to two advanced language features called sequence expressions and workflows. 
  10. ^ "Glossary of Terms and Jargon". Perl Foundation Perl 6 Wiki. The Perl Foundation. 28 February. Diarsipkan dari versi asli tanggal 2012-01-21. Diakses tanggal 9 February 2012. 
  11. ^ Kuchling, A. M. "Functional Programming HOWTO". Python v2.7.2 documentation. Python Software Foundation. Diarsipkan dari versi asli tanggal 2012-10-24. Diakses tanggal 9 February 2012. 
  12. ^ Fogus, Michael (6 August 2010). "MartinOdersky take(5) toList". Send More Paramedics. Diarsipkan dari versi asli tanggal 2012-02-14. Diakses tanggal 9 February 2012. 
  13. ^ Erik Meijer, "Confessions of a Used Programming Language Salesman",[1] OOPSLA 2007
  14. ^ Edward Kmett, Edward Kmett – Type Classes vs. the World
  15. ^ Mossberg, Erik (2020-06-08), erkmos/haskell-companies, diakses tanggal 2020-06-22 
  16. ^ O'Sullivan, Bryan; Goerzen, John; Stewart, Donald Bruce (15 November 2008). Real World Haskell: Code You Can Believe In (dalam bahasa Inggris). "O'Reilly Media, Inc.". hlm. xxviii–xxxi. ISBN 978-0-596-55430-9. 
  17. ^ "Haskell in Production: Riskbook". Serokell Software Development Company (dalam bahasa Inggris). Diakses tanggal 2021-09-07. 
  18. ^ "PYPL PopularitY of Programming Language index". pypl.github.io (dalam bahasa Inggris). May 2021. Diarsipkan dari versi asli tanggal 7 May 2021. Diakses tanggal 16 May 2021. 
  19. ^ Frederickson, Ben. "Ranking Programming Languages by GitHub Users". www.benfrederickson.com. Diakses tanggal 6 September 2019. 
  20. ^ Peyton Jones 2003, Preface.
  21. ^ Kesalahan pengutipan: Tag <ref> tidak sah; tidak ditemukan teks untuk ref bernama 2020committee
  22. ^ GHC 2020 Team (29 October 2021) GHC 9.2.1 released
  23. ^ Proposed compiler and language changes for GHC and GHC/Haskell
  24. ^ Wadler, P.; Blott, S. (1989). "How to make ad-hoc polymorphism less ad hoc". Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages - POPL '89. ACM. hlm. 60–76. doi:10.1145/75277.75283alt=Dapat diakses gratis. ISBN 978-0-89791-294-5. 
  25. ^ Hallgren, T. (January 2001). "Fun with Functional Dependencies, or Types as Values in Static Computations in Haskell". Proceedings of the Joint CS/CE Winter Meeting. Varberg, Sweden. 
  26. ^ "HackageDB statistics". Hackage.haskell.org. Diarsipkan dari versi asli tanggal 3 May 2013. Diakses tanggal 26 June 2013. 
  27. ^ Agda 2, Agda Github Community, 2021-10-15, diakses tanggal 2021-10-16 
  28. ^ "The Haskell Cabal". Diakses tanggal 8 April 2015. 
  29. ^ "Linspire/Freespire Core OS Team and Haskell". Debian Haskell mailing list. May 2006. Diarsipkan dari versi asli tanggal 27 December 2017. Diakses tanggal 14 June 2006. 
  30. ^ "Web/Frameworks – HaskellWiki". wiki.haskell.org. Diakses tanggal 17 September 2022. 

Pranala luar

[sunting | sunting sumber]
Various
Tutorials