Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.haskell > #549

Re: Newbie needing help

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar | Unroll thread


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