Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.haskell > #549
| From | Ben Bacarisse <ben.usenet@bsb.me.uk> |
|---|---|
| Newsgroups | comp.lang.haskell |
| Subject | Re: Newbie needing help |
| Date | 2019-12-14 02:07 +0000 |
| Organization | A noiseless patient Spider |
| Message-ID | <87o8wby817.fsf@bsb.me.uk> (permalink) |
| References | <addc4555-3194-40ec-9df7-73720b0a40a8@googlegroups.com> |
Steve Graham <solitary.wanderer52@gmail.com> writes:
> Long-time programmer/newbie with Haskell...
>
> Thought I'd check out a program I saw at
> https://programmingpraxis.com/2019/12/13/pentabonacci-numbers/#comments:
>
> pdiv (a:s) t = a : pdiv (zipWith (-) (s ++ repeat 0) (map (*a) t)) t
> take 20 (pdiv [1] [-1,-1])
> take 20 (pdiv [0,1] [-1,-1,-1,-1,-1])
>
> I entered at the Haskell Online Compiler
> (https://paiza.io/projects/HEXouZ1jmJjemSO1cULHoA?language=haskell)
> and on my iOS Haskell app and got the same error:
>
> [1 of 1] Compiling Main ( Main.hs, Main.o )
>
> Main.hs:3:1: error:
> Parse error: naked expression at top level
> Perhaps you intended to use TemplateHaskell
>
> Interestingly on my Windows 10 GHCi app, it worked fine:
>
> GHCi, version 8.4.3: http://www.haskell.org/ghc/ :? for help
> Prelude> pdiv (a:s) t = a : pdiv (zipWith (-) (s ++ repeat 0) (map (*a) t)) t
> Prelude> take 20 (pdiv [1] [-1,-1])
> [1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765]
> Prelude> take 20 (pdiv [0,1] [-1,-1,-1,-1,-1])
> [0,1,1,2,4,8,16,31,61,120,236,464,912,1793,3525,6930,13624,26784,52656,103519]
> Prelude>
>
> I'm sure it's some formatting issue. I would appreciate any
> assistance you folks could offer.
It's not a formatting issue. The interpreter will take expressions and
evaluate them, but a Haskell program, suitable for compilation, can't
have "top-level" expressions.
The compilable, "program" version of what you wrote is
pdiv (a:s) t = a : pdiv (zipWith (-) (s ++ repeat 0) (map (*a) t)) t
main = do
print $ take 20 (pdiv [1] [-1,-1])
print $ take 20 (pdiv [0,1] [-1,-1,-1,-1,-1])
You would see the same error if you used ghc (rather than ghci) on your
Windows box:
$ ghc p.hs
[1 of 1] Compiling Main ( p.hs, p.o )
p.hs:2:1: error:
Parse error: module header, import declaration
or top-level declaration expected.
|
2 | take 20 (pdiv [1] [-1,-1])
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
--
Ben.
Back to comp.lang.haskell | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Newbie needing help Steve Graham <solitary.wanderer52@gmail.com> - 2019-12-13 17:14 -0800
Re: Newbie needing help Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-12-14 02:07 +0000
Re: Newbie needing help Steve Graham <solitary.wanderer52@gmail.com> - 2019-12-13 18:12 -0800
csiph-web