As a starter with Haskell, here my experience. Hope to hear and find a open ear, and a help hand as response?
The list of trails, which failed to get a Haskell working, from blog post till the official Haskell get started site is to long to mention or documented her, but I will come one in particular this one:
Haskell getting started from the official site:
wget -qO- https://get.haskellstack.org/ | sh
made a file HelloWorld.hs
#!/usr/bin/env stack
-- stack --resolver lts-13.7 script
main :: IO ()
main = putStrLn "Hello World"
stack HelloWorld.hs
Downloaded lts-13.7 build plan.
AesonException "Error in $.packages.cassava.constraints.flags['bytestring--lt-0_10_4']: Invalid flag name: \"bytestring--lt-0_10_4\""
If you call Haskell a functional language, which it is, then it would good to see that blog post and official explanation of Haskell code is functional - in the meaning of working. Maintains, and keep a eye on what you publish. And reach out a hand to beginners, they only will stay as long as you reach out your hand and is it trust wards. In practical sens, Haskell is poor documented. And I would not recommend it to others, because of that. If this has no meaning for the developers?
What is the version of your stack executable? Yhis error reminds me of a bug from stack version <1.7.0 i think? Maybe try running stack upgrade? your stack executable should be of version >2
$ stack upgrade
Current Stack version: 1.5.1, available download version: 2.1.3
Newer version detected, downloading
Querying for archive location for platform: linux-x86_64-static
Downloading from: https://github.com/commercialhaskell/stack/releases/download/v2.1.3/stack-2.1.3-linux-x86_64-static.tar.gz
Download complete, testing executable
Version 2.1.3, Git revision 636e3a759d51127df2b62f90772def126cdf6d1f (7735 commits) x86_64 hpack-0.31.2
WARNING: Installation path /home/timetochange/.local/bin not found on the PATH environment variable
New stack executable available at /home/timetochange/.local/bin/stack
oh, right, the message in your previous message said it installed the new stack executable at /home/timetochange/.local/bin/stack, but ~/.local/bin is not in your path so when you write stack it still refers to the old stack which before the upgrade.
Either add ~/.local/bin/ to your path, or place the new stack executable (found in /home/timetochange/.local/bin/stack) instead of the old one. you can do that with mv /home/timetochange/.local/bin/stack $(which stack). you might need to sudo that though.
$ stack HelloWorld.hs
Unpacking GHC into /home/timetochange/.stack/programs/x86_64-linux/ghc-8.6.3.tem rts-1.0: Warning: .:466:1: The field "hugs-options" is deprecated. hugs isn't supported anymore
Hello World
What to do with "The field âhugs-optionsâ is deprecated âŚ
Thanks, at least it looks that something start to work! Maybe as you have seen I have posted more question under Learn would be nice to see that some one takes a look at them to?
Strangely enough this happen when I stack another file.hs It start to download again GHC
stack myDrop.hs
stack: WARNING! Expecting stack options comment at line 1, column 1
stack: WARNING! Missing or unusable stack options specification
stack: WARNING! Using runghc without any additional stack options
Unpacking GHC into /home/timetochange/.stack/programs/x86_64-linux/ghc-8.6.5.tem Inrts-1.0: Warning: .:466:1: The field "hugs-options" is deprecated. hugs isn't supported anymore
What to do with "The field âhugs-optionsâ is deprecated âŚ
It happens because stack just installed ghc for you. See that the next time you run it it will not appear.
Strangely enough this happen when I stack another file.hs It start to download again GHC
Stack will install the relevant compiler and packages according to the resolver described to it. see that in the HelloWorld.hs you wrote: -- stack --resolver lts-13.7 script.
myDrop.hs either has something similar to that or is using âthe globalâ configuration described in .stack/global-project/stack.yaml (I recommend opening that file and update the resolver to something newer such as lts-14.20.
The strange think about this for me is, why this is not mentioned on the official Haskell site https://www.haskell.org/ the place where I started.
Over all my experience with Haskell is not that good, documentation is not well maintained. Getting started is a pain in the ass so to say. Even with Python as my back ground, what will this all mean for people who have not programming skills � I would not recommend Haskell for all of this.
Well a better question would be, what would you like to be rewritten?
I found to many inconsistent examples, that it not easy to drop them all here, but the list is growingâŚ
-- file: ch03/BookStore.hs
data MagazineInfo = Magazine Int String [String]
deriving (Show)
stack exec -- ghc BookStore.hs
[1 of 1] Compiling Main ( BookStore.hs, BookStore.o )
BookStore.hs:1:1: error:
The IO action âmainâ is not defined in module âMainâ
|
1 | myInfo = Book 9780135072455 "Algebra of Programming"
| ^
And I all ready dropped more in other topic on this forum, as you maybe have seen?
Well and that starters has to open a issue on a official site to let them know that there examples are not working, is that the way Haskell thinks, functional - meaning working consistent - programming???
It would by great to see not only Haskell codes is consistent, but also there documentation!
The chapter in the book you tried to link to mentions using ghci but you have tried to use ghc instead which is why you are having problems with that.
Also note that there may be other issues with real world haskell as it was written in 2007. Iâm aware that someone is currently working on updating it.
Some issues you have may be caused by third party libraries you tried to use or by a blocking bug in an old stack executable which will hopefully wonât repeat itself.
You donât have to open a ticket if you donât want to.
$ ghci
GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help
Prelude> :load BookStore.hs
[1 of 1] Compiling Main ( BookStore.hs, interpreted )
BookStore.hs:1:10: error:
Data constructor not in scope:
Book :: Integer -> [Char] -> [[Char]] -> t
Failed, modules loaded: none.
Prelude>
Some issues you have may be caused by third party libraries you tried to use or by a blocking bug in an old stack executable which will hopefully wonât repeat itself.
Well do you think some one who start with Haskell has to find and resolve all this issue? That is most unfriendly Haskell welcome!
Maybe you are willing to help me I show me working starters examples?
What is BookStore.hs ? Where did you take it from?
Well do you think some one who start with Haskell has to find and resolve all this issue? That is most unfriendly Haskell welcome!
A new haskell user is not expected to download an old version of stack (bugs happen), nor is expected to try and use a random project (making sure a project compiles and works and that is the docs can only be the responsibility of the projectâs maintainer. This is true for any and all programming languages). They are currently expected to follow one of the guides to the language and use recommended libraries.
Maybe you are willing to help me I show me working starters examples?
And why a new Haskell user is not expected to try random project??? That is the way I found a lot of working examples in Python and other languages. At least it is not mentioned on the Haskell site not to do so. It would be better to clear that up with a notification if that is the case.
Iâm sorry but I find it hard to believe that you ran that command and got stack v1.5.1 installed, thatâs a version from 2017.
If you try a random project in any language it might not work, thatâs just the way it is.
haskell.org is the official, I recommend following the fpcomplete one. I understand that this is confusing.
After compiling hello-world.hs, the result executable is hello-world. You are trying to run the source code itself instead of the compiled executable. This is not an issue of the documentation.
After compiling hello-world.hs, the result executable is hello-world. You are trying to run the source code itself instead of the compiled executable. This is not an issue of the documentation.
I see what you mean, I tried to ./hello-world.sh It must be ./hello-world with out extension!