haskell.orgHaskell Language
haskell.org Profile
haskell.org
Sub Domains:phabricator.haskell.org downloads.haskell.org wiki.haskell.org hackage.haskell.org
Title:Haskell Language
Description:The Haskell purely functional programming language home page.
Keywords:haskell,functional,pure,programming,lazy...
Discover haskell.org website stats, rating, details and status online.Use our online tools to find owner and admin contact info. Find out where is server located.Read and write reviews or vote to improve it ranking. Check alliedvsaxis duplicates with related css, domain relations, most used words, social networks references. Go to regular site
haskell.org Information
Website / Domain: |
haskell.org |
HomePage size: | 46.084 KB |
Page Load Time: | 0.308376 Seconds |
Website IP Address: |
23.253.242.70 |
Isp Server: |
Rackspace Cloud Servers |
haskell.org Ip Information
Ip Country: |
United States |
City Name: |
San Antonio |
Latitude: |
29.499677658081 |
Longitude: |
-98.39924621582 |
haskell.org Keywords accounting
Keyword |
Count |
haskell | 24 |
functional | 2 |
pure | 4 |
programming | 4 |
lazy | 2 |
haskell.org Httpheader
Server: nginx/1.14.0 (Ubuntu) |
Date: Sat, 20 Jun 2020 08:28:48 GMT |
Content-Type: text/html |
Last-Modified: Mon, 04 Mar 2019 07:11:09 GMT |
Transfer-Encoding: chunked |
Connection: keep-alive |
ETag: W/"5c7ccf8d-a89f" |
Content-Encoding: gzip |
haskell.org Meta Info
charset="utf-8"/ |
content="IE edge" http-equiv="X-UA-Compatible"/ |
content="width=device-width, initial-scale=1" name="viewport"/ |
content="haskell,functional,pure,programming,lazy" name="keywords"/ |
content="The Haskell purely functional programming language home page." name="description"/ |
23.253.242.70 Domains
haskell.org Similar Website
Domain |
WebSite Title |
haskell.org | Haskell Language |
haskell.redvector.com | Haskell |
vendor.haskell.com | Haskell |
totale.rosettastone.com | Official Rosetta Stone® - Language Learning - Learn a Language |
languages.uchicago.edu | University of Chicago Language Center | Serving the UChicago Language Community |
lcc.uh.edu | University of Houston Language and Culture Center (LCC) English as a Second Language (ESL) Intensive |
esl.gatech.edu | Home | Language Institute - English as a Second Language (ESL) | Georgia Tech Professional Education |
rosettastoneclassroom.com | Official Rosetta Stone® - Language Learning - Learn a Language |
www4.tellmemorecampus.com | Official Rosetta Stone® - Language Learning - Learn a Language |
classic.fitbrains.com | Official Rosetta Stone® - Language Learning - Learn a Language |
fitbrains.com | Official Rosetta Stone® - Language Learning - Learn a Language |
resources.rosettastone.com | Official Rosetta Stone® - Language Learning - Learn a Language |
fluentu.com | Language Immersion Online | Learn a Language with Videos | FluentU |
transparent.com | Language-Learning Software and Online Courses | Transparent Language |
trstone.com | Official Rosetta Stone® - Language Learning - Learn a Language |
haskell.org Traffic Sources Chart
haskell.org Alexa Rank History Chart
haskell.org Html To Plain Text
Downloads Community Documentation An advanced, purely functional programming language Declarative, statically typed code. primes = filterPrime [ 2 .. ] where filterPrime ( p : xs ) = p : filterPrime [ x | x <- xs , x `mod` p /= 0 ] Try it! Try haskell requires Javascript to be enabled. Try haskell requires cookies to be enabled. Videos Escape from the ivory tower: The Haskell journey, by Simon Peyton-Jones Haskell taketh away: limiting side effects for parallel programming, by Ryan Newton Production Haskell, by Reid Draper Haskell Amuse-Bouche, by Mark Lentczner Haskell is Not For Production and Other Tales, by Katie Miller Your First Web Application with Spock, by Oskar Wickström Features Statically typed Every expression in Haskell has a type which is determined at compile time. All the types composed together by function application have to match up. If they don't, the program will be rejected by the compiler. Types become not only a form of guarantee, but a language for expressing the construction of programs. Click to expand All Haskell values have a type: char = 'a' :: Char int = 123 :: Int fun = isDigit :: Char -> Bool You have to pass the right type of values to functions, or the compiler will reject the program: Type error isDigit 1 You can decode bytes into text: bytes = Crypto . Hash . SHA1 . hash "hello" :: ByteString text = decodeUtf8 bytes :: Text But you cannot decode Text, which is already a vector of Unicode points: Type error doubleDecode = decodeUtf8 ( decodeUtf8 bytes ) Purely functional Every function in Haskell is a function in the mathematical sense (i.e., "pure"). Even side-effecting IO operations are but a description of what to do, produced by pure code. There are no statements or instructions, only expressions which cannot mutate variables (local or global) nor access state like time or random numbers. Click to expand The following function takes an integer and returns an integer. By the type it cannot do any side-effects whatsoever, it cannot mutate any of its arguments. square :: Int -> Int square x = x * x The following string concatenation is okay: "Hello: " ++ "World!" The following string concatenation is a type error: Type error "Name: " ++ getLine Because getLine has type IO String and not String , like "Name: " is. So by the type system you cannot mix and match purity with impurity. Type inference You don't have to explicitly write out every type in a Haskell program. Types will be inferred by unifying every type bidirectionally. However, you can write out types if you choose, or ask the compiler to write them for you for handy documentation. Click to expand This example has a type signature for every binding: main :: IO () main = do line :: String <- getLine print ( parseDigit line ) where parseDigit :: String -> Maybe Int parseDigit ( ( c :: Char ) : _ ) = if isDigit c then Just ( ord c - ord '0' ) else Nothing But you can just write: main = do line <- getLine print ( parseDigit line ) where parseDigit ( c : _ ) = if isDigit c then Just ( ord c - ord '0' ) else Nothing You can also use inference to avoid wasting time explaining what you want: do ss <- decode "[\"Hello!\",\"World!\"]" is <- decode "[1,2,3]" return ( zipWith ( \ s i -> s ++ " " ++ show ( i + 5 ) ) ss is ) => Just [ "Hello! 6" , "World! 7" ] Types give a parser specification for free, the following input is not accepted: do ss <- decode "[1,2,3]" is <- decode "[null,null,null]" return ( zipWith ( \ s i -> s ++ " " ++ show ( i + 5 ) ) ss is ) => Nothing Concurrent Haskell lends itself well to concurrent programming due to its explicit handling of effects. Its flagship compiler, GHC, comes with a high-performance parallel garbage collector and light-weight concurrency library containing a number of useful concurrency primitives and abstractions. Click to expand Easily launch threads and communicate with the standard library: main = do done <- newEmptyMVar forkIO ( do putStrLn "I'm one thread!" putMVar done "Done!" ) second <- forkIO ( do threadDelay 100000 putStrLn "I'm another thread!" ) killThread second msg <- takeMVar done putStrLn msg Use an asynchronous API for threads: do a1 <- async ( getURL url1 ) a2 <- async ( getURL url2 ) page1 <- wait a1 page2 <- wait a2 ... Atomic threading with software transactional memory: transfer :: Account -> Account -> Int -> IO () transfer from to amount = atomically ( do deposit to amount withdraw from amount ) Atomic transactions must be repeatable, so arbitrary IO is disabled in the type system: Type error main = atomically ( putStrLn "Hello!" ) Lazy Functions don't evaluate their arguments. This means that programs can compose together very well, with the ability to write control constructs (such as if/else) just by writing normal functions. The purity of Haskell code makes it easy to fuse chains of functions together, allowing for performance benefits. Click to expand Define control structures easily: when p m = if p then m else return () main = do args <- getArgs when ( null args ) ( putStrLn "No args specified!" ) If you notice a repeated expression pattern, like if c then t else False you can give this a name, like and c t = if c then t else False and then use it with the same effect as the orginal expression. Get code re-use by composing lazy functions. It's quite natural to express the any function by reusing the map and or functions: any :: ( a -> Bool ) -> [ a ] -> Bool any p = or . map p Reuse the recursion patterns in map , filter , foldr , etc. Packages Open source contribution to Haskell is very active with a wide range of packages available on the public package servers. Click to expand There are 6,954 packages freely available. Here is a sample of the most common ones: bytestring Binary data base Prelude, IO, threads network Networking text Unicode text parsec Parser library directory File/directory hspec RSpec-like tests attoparsec Fast parser monad-logger Logging persistent Database ORM template-haskell Meta-programming tar Tar archives snap Web framework time Date, time, etc. happstack Web framework yesod Web framework containers Maps, graphs, sets fsnotify Watch filesystem hint Interpret Haskell unix UNIX bindings SDL SDL binding OpenGL OpenGL graphics system criterion Benchmarking pango Text rendering cairo Cairo graphics statistics Statistical analysis gtk Gtk+ library glib GLib library test-framework Testing framework resource-pool Resource pooling conduit Streaming I/O mwc-random High-quality randoms QuickCheck Property testing stm Atomic threading blaze-html Markup generation cereal Binary parsing/printing xml XML parser/printer http-client HTTP client engine zlib zlib/gzip/raw yaml YAML parser/printer pandoc Markup conversion binary Serialization tls TLS/SSL zip-archive Zip compression warp Web server text-icu Text encodings vector Vectors async Async concurrency pipes Streaming IO scientific Arbitrary-prec. nums process Launch processes aeson JSON parser/printer dlist Difflists syb Generic prog. Sponsors DataDog provides powerful, customizable 24/7 metrics and monitoring integration for all of Haskell.org, and complains loudly for us when things go wrong. Fastly 's Next Generation CDN provides low latency access for all of Haskell.org's downloads and highest traffic services, including the primary Hackage server, Haskell Platform downloads, and more. Packet provides compute, storage, and networking resources, powering almost all of Haskell.org in several regions around the world. Status.io powers https://status.haskell.org , and lets us easily tell you when we broke something. Galois provides infrastructure, funds, administrative resources and has historically hosted critical Haskell.org infrastructure, as well as helping the Haskell community at large with their work. DreamHost has teamed up to provide Haskell.org with redundant, scalable object-storage through their Dream Objects service. Webmon p...
haskell.org Whois
"domain_name": [
"HASKELL.ORG",
"haskell.org"
],
"registrar": "NAMECHEAP INC",
"whois_server": "whois.namecheap.com",
"referral_url": null,
"updated_date": [
"2019-12-19 05:30:24",
"2018-09-25 19:28:58"
],
"creation_date": "1996-12-12 05:00:00",
"expiration_date": "2027-12-11 05:00:00",
"name_servers": [
"LEX.NS.CLOUDFLARE.COM",
"POLA.NS.CLOUDFLARE.COM",
"lex.ns.cloudflare.com",
"pola.ns.cloudflare.com"
],
"status": "clientTransferProhibited https://icann.org/epp#clientTransferProhibited",
"emails": [
"abuse@namecheap.com",
"hostmaster@galois.com"
],
"dnssec": [
"signedDelegation",
"unsigned"
],
"name": "Yale University Computer Science Department Haskell Group",
"org": "Yale University Computer Science Department Haskell Group",
"address": "51 PROSPECT ST",
"city": "New Haven",
"state": "CT",
"zipcode": "06511-8937",
"country": "US"