Send Beginners mailing list submissions to
        beginners@haskell.org

To subscribe or unsubscribe via the World Wide Web, visit
        http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
or, via email, send a message with subject or body 'help' to
        beginners-requ...@haskell.org

You can reach the person managing the list at
        beginners-ow...@haskell.org

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Beginners digest..."


Today's Topics:

   1.  [Netwire] Problems constructing a simple Event   Wire
      (Francesco Ariis)
   2. Re:  Mutable grid (mike h)


----------------------------------------------------------------------

Message: 1
Date: Tue, 27 Dec 2016 08:49:11 +0100
From: Francesco Ariis <fa...@ariis.it>
To: beginners@haskell.org
Subject: [Haskell-beginners] [Netwire] Problems constructing a simple
        Event   Wire
Message-ID: <20161227074911.ga15...@casa.casa>
Content-Type: text/plain; charset="utf-8"

Hello list,
    I am learning netwire and decided to write a simple toy program
to get to know the library better. The structure is extremely
simple:

    1. a MVar is created and an endless loop fills it with Char
    2. a Wire is created (using mkGen_) to provide Events (from the
       source described in (1))
    3. the final Wire performs some basic filtering/merging on (2)
       and outputs a behaviour which is then printed on screen.

[[[ I attach a commented .hs, `main` to test, 'x' and C-c to exit ]]]

The final wire `testWire2 = hold . (keyQ &> keyA)` doesn't work as
expected, i.e. it responds to Q keypresses but not to A ones.

I suspect the problem lies in how I used `mkGen_` to create the
'source' wire, but I am not sure to fix it.

Any help appreciated!
-F
-------------- next part --------------
A non-text attachment was scrubbed...
Name: beginner-netwire.hs
Type: text/x-haskell
Size: 2331 bytes
Desc: not available
URL: 
<http://mail.haskell.org/pipermail/beginners/attachments/20161227/c0585a78/attachment-0001.hs>

------------------------------

Message: 2
Date: Tue, 27 Dec 2016 10:38:34 +0000
From: mike h <mike_k_hough...@yahoo.co.uk>
To: The Haskell-Beginners Mailing List - Discussion of primarily
        beginner-level topics related to Haskell <beginners@haskell.org>
Subject: Re: [Haskell-beginners] Mutable grid
Message-ID: <99db1c0e-0778-4305-8b89-fe48d0643...@yahoo.co.uk>
Content-Type: text/plain; charset="utf-8"

Hi,
In the end I used a set to hold tuples of int pairs (row, col) and manipulated 
them


type By = Int 
type Row = Int 
type Col = Int 

type Pixels = Set (Row, Col)

data Screen = Screen

  { maxX   :: Col,
    maxY   :: Row,
    pixels :: Pixels
  }

Thanks

Mike

> On 24 Dec 2016, at 14:37, Magnus Therning <mag...@therning.org> wrote:
> 
> How did it go?
> 
> When I solved that AoC problem I ended up using the matrix package: 
> http://hackage.haskell.org/package/matrix 
> <http://hackage.haskell.org/package/matrix>
> 
> /M
> 
> 
> On 19 Dec 2016 7:31 pm, "mike h" <mike_k_hough...@yahoo.co.uk 
> <mailto:mike_k_hough...@yahoo.co.uk>> wrote:
> Thanks for the pointers - I’ll take a look.
> 
> The background to this is one of the puzzles on Advent Of Code 2016 Q.8.
> https://adventofcode.com/2016/day/8 <https://adventofcode.com/2016/day/8>
> 
> There are (several hundred) sequential  operations on a grid 50 x 6  - 
> initially all zeroes
> e.g. 
> rotate row y=0 by 4 
> rect 2x1 — sets sub grid from (0,0) to (2,1) to all 1s
> rotate column x=35 by 1
> 
> I’m fine about parsing the input to a data structure and executing them i.e. 
> 
> evalExpr :: Expr -> Screen -> Screen     — screen is essentially [[Int]]
> evalExpr e s =
>     case e of
>         (Rect   r c ) ->     evalRect   r c s
>         (RotRow r by) -> evalRotRow r by s
>         (RotCol c by) -> evalRotCol c by s
>         (NOP        ) -> id s
> 
> rotating a row was simple enough, code to  rotate column a bit untidy and not 
> very nice. The 
> evalRect  - which sets values to one in the rectangle of size r x c starting 
> at (0,0) top left - triggered the original question.
> 
> 
> At this point  my knowledge of Haskell is being pushed (which is good) but I 
> have a feeling that 
> my approach is not ‘correct’ once it gets beyond the parsing. Should each of 
> the evalRect, evalRotRow and evalRotCol be called with a Screen (i.e. the 
> grid at the root of this question)?
> Is the state monad a fit for this problem?
> Should I change my approach or is using vector the way forward?
> 
> Many thanks
> 
> Mike
> 
> 
> 
> 
> 
>> On 19 Dec 2016, at 15:27, Michael Orlitzky <mich...@orlitzky.com 
>> <mailto:mich...@orlitzky.com>> wrote:
>> 
>> On 12/19/2016 08:10 AM, mike h wrote:
>>> Hi,
>>> 
>>> I’m looking a problem where I have an NxN grid of ints. I need a
>>> function like setValue x y newVal
>>> 
>>> I have tried using [[Int]] but it does become messy when splitting ,
>>> dropping and then ++ back together.
>>> 
>>> What other options are available to represent a mutable grid?
>>> 
>> 
>> Mutable vectors (from the vector[1] package) are an obvious choice. When
>> I had to do something similar, I wound up going all the way to repa[2],
>> which magically turns all of your grid operations into parallel ones.
>> 
>> 
>> [1] https://hackage.haskell.org/package/vector 
>> <https://hackage.haskell.org/package/vector>
>> [2] https://hackage.haskell.org/package/repa 
>> <https://hackage.haskell.org/package/repa>
>> 
>> _______________________________________________
>> Beginners mailing list
>> Beginners@haskell.org <mailto:Beginners@haskell.org>
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners 
>> <http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners>
> 
> 
> _______________________________________________
> Beginners mailing list
> Beginners@haskell.org <mailto:Beginners@haskell.org>
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners 
> <http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners>
> 
> _______________________________________________
> Beginners mailing list
> Beginners@haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners

-------------- next part --------------
An HTML attachment was scrubbed...
URL: 
<http://mail.haskell.org/pipermail/beginners/attachments/20161227/f5cc1eaf/attachment-0001.html>

------------------------------

Subject: Digest Footer

_______________________________________________
Beginners mailing list
Beginners@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners


------------------------------

End of Beginners Digest, Vol 102, Issue 16
******************************************

Reply via email to