Thanks very much for all this Nick!

Re Maybe use, good call

Re List methods: I had seen elm-community/list-extra 
<http://www.google.com/url?q=http%3A%2F%2Fpackage.elm-lang.org%2Fpackages%2Felm-community%2Flist-extra%2F3.1.0%2F&sa=D&sntz=1&usg=AFQjCNHaZ6xnriX_Y1u9gmx_rCyTHn6eAQ>
 but 
wanted to make sure I wasn't missing anything in the stdlib first. Great to 
hear that's pretty normal to use.
 
Re type alias + maybe instead of a new type, that seems pretty reasonable.

Re: extensible records, I certainly concede they're not paying off here. I 
am using different combinations a bit, but I don't need so many. I also ran 
into some type annotating behavior that confuses me with extensible types, 
see https://gist.github.com/thomasballinger/a0d8b38fa7186ee2e608d4772f2ebe7e 
(also described in a sibling thread)


On Thursday, August 18, 2016 at 7:30:01 PM UTC-4, Nick H wrote:
>
> Regarding the extensible records... Movable (Standable (Collidable (
> Drawable {}))) sure is a mouthful isn't it? :-)  It looks like every 
> thing in your game is the union of all four type aliases... so why not just 
> make it one type alias?
>
>
> OK, one last thing. This type definition...
>
> type PossibleCollision = NoCollision | Collision CollisionType Float 
> (Float, Float)
>
> I think the more idiomatic thing to do (but this might just be personal 
> taste) would be to define
>
> type alias Collision =
>     { collisionType : CollisionType
>     , overlap : Float
>     , velocity : Float
>     }
>
> And then in the places where you are using "PossibleCollision," use "Maybe 
> Collision" instead. The Maybe 
> <http://package.elm-lang.org/packages/elm-lang/core/4.0.5/Maybe> is super 
> useful for dealing with cases where you have either something or nothing. I 
> bet that you could shorten your collision detection code a lot by switching 
> to using Maybes. (For instance, you could use List.filterMap 
> <http://package.elm-lang.org/packages/elm-lang/core/4.0.5/List#filterMap>
> ).
>
>
>
>
>
>
>
> On Thu, Aug 18, 2016 at 4:07 PM, Nick H <[email protected] 
> <javascript:>> wrote:
>
>> (Well, I don't know if the reactor will be *replaced*, but a debug mode 
>> will be added, and it sounds like it will be much more useful for serious 
>> projects.)
>>
>> On Thu, Aug 18, 2016 at 4:04 PM, Nick H <[email protected] 
>> <javascript:>> wrote:
>>
>>> Couple of things I noticed:
>>>
>>> You are handling window resizing with a port. Elm has a Window module 
>>> <http://package.elm-lang.org/packages/elm-lang/window/1.0.0/> that can 
>>> handle this for you.
>>>
>>> Your Util.range can be replaced by built in syntax [ 0 .. max ]
>>>
>>> For list utilities, I highly recommend looking at 
>>> elm-community/list-extra 
>>> <http://www.google.com/url?q=http%3A%2F%2Fpackage.elm-lang.org%2Fpackages%2Felm-community%2Flist-extra%2F3.1.0%2F&sa=D&sntz=1&usg=AFQjCNHaZ6xnriX_Y1u9gmx_rCyTHn6eAQ>.
>>>  
>>> Similarly, elm-community has dict-extra, maybe-extra, and a whole lot more. 
>>> Just search the package manager for "extra" and you will find a lot of 
>>> stuff!
>>>  
>>> As far as formatting goes, yours looks pretty standard. Were you using 
>>> elm-format?
>>>
>>> Don't feel bad about abandoning the reactor. Evan has said 
>>> <https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/elm-dev/5Tm5_x7AfyQ/a5Kj8TNeCAAJ>
>>>  
>>> it's going to be replaced with a "debug" flag in the compiler. That will 
>>> allow some of the nice reactor features to be used in programs that are 
>>> embedded in HTML.
>>>
>>>
>>> On Thu, Aug 18, 2016 at 1:43 PM, Thomas Ballinger <[email protected] 
>>> <javascript:>> wrote:
>>>
>>>> Thanks so much for taking a look! I've fixed (a likely cause of) the 
>>>> collision bug. It's fun to hear about your experience playing, despite the 
>>>> current lack of game experience. I'm a fan of the "ooooh it's tetris" 
>>>> realization (and ideally would like to time the music's transition to the 
>>>> tetris theme to this moment) so don't want to start out zoomed out, but 
>>>> plan to put off decisions about that until there's some gameplay. Let me 
>>>> know if you get a chance to look at the code.
>>>>
>>>>
>>>> On Thursday, August 18, 2016 at 2:13:41 PM UTC-4, Will White wrote:
>>>>>
>>>>> Screenshot
>>>>>
>>>>> On Thursday, August 18, 2016 at 6:25:24 PM UTC+1, Will White wrote:
>>>>>>
>>>>>> Hi Thomas!
>>>>>>
>>>>>> I've played the game and I'd like to give you my thoughts on the UX. 
>>>>>> I may be able to review the code later. I wish I'd recorded my thoughts 
>>>>>> as 
>>>>>> I played.
>>>>>>
>>>>>> I ran right (it's Mario), bumped into a red wall. Ran left, same. 
>>>>>> What do I do? Ran right, green block has appeared. Jump over it. Oh, 
>>>>>> it's a 
>>>>>> Tetris block. Oh, the grey is where the block's coming down. 1 I get 
>>>>>> squashed and it bugs out (screenshot). I think I'm able to play on 
>>>>>> (arena 
>>>>>> not reset). "Tetris controls IJKL" Oh cool, I can control the Tetris 
>>>>>> blocks 
>>>>>> too!
>>>>>>
>>>>>> Having a zoomed out view to start with (and then zooming in) would 
>>>>>> have got rid of all the thoughts up to 1. Knowing the Tetris controls 
>>>>>> earlier would have been fairer.
>>>>>>
>>>>>> Cool idea!
>>>>>>
>>>>>> On Wednesday, August 17, 2016 at 10:40:38 PM UTC+1, Thomas Ballinger 
>>>>>> wrote:
>>>>>>>
>>>>>>> Hi Elm folks! I've enjoyed reading this list for a bit. I've written 
>>>>>>> my first Elm thing over the last couple weeks and would love to hear 
>>>>>>> any 
>>>>>>> kind of feedback on it. It's an unfinished game jam piece I kept 
>>>>>>> running 
>>>>>>> with so the title doesn't make sense.
>>>>>>>
>>>>>>> code: https://github.com/thomasballinger/loveinthetimeoftetris
>>>>>>> live: love.ballingt.com (takes about 70 seconds to play all of)
>>>>>>>
>>>>>>> I was going to clean things up the way I know how, but I need to 
>>>>>>> take a break to get some other things done and I thought I'd learn more 
>>>>>>> by 
>>>>>>> asking how someone else might clean it up. Please don't assume I know 
>>>>>>> what 
>>>>>>> I'm doing in the slightest :)
>>>>>>>
>>>>>>> Any feedback would be great, but if prompts are helpful:
>>>>>>> * what does this code make it look like I'm missing about Elm?
>>>>>>> * what do you think of the extensible record type aliases? I think 
>>>>>>> the way I've used them is mostly terrible, I designed them up front 
>>>>>>> instead 
>>>>>>> of letting them evolve.
>>>>>>> * code style?
>>>>>>> * I'm using an elm autoformatter, how's my formatting? Is this style 
>>>>>>> common?
>>>>>>> * I don't think I'll be using evancz/elm-graphics in the future 
>>>>>>> since I'll be doing less gamey stuff or want to work with canvas more 
>>>>>>> directly. How is this usually done?
>>>>>>> * I abandoned elm reactor once I started embedding in html, is that 
>>>>>>> a viable workflow I should have stuck with for longer?
>>>>>>> * I was tempted to start a utils file or look for an external lib 
>>>>>>> but was trying to focus on learning the stdlib. Are there pretty common 
>>>>>>> util libs folks use? I sure missed some list functions.
>>>>>>> * I escaped to JavaScript anytime I thought it would be hard to do 
>>>>>>> something with the stdlib, presumably it would be nice to use Elm for 
>>>>>>> some 
>>>>>>> of these things?
>>>>>>>
>>>>>>> Thanks so much, and feel free to contact off list if you prefer at 
>>>>>>> [email protected] - if you do I'll report back what I learned to 
>>>>>>> the list.
>>>>>>>
>>>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "Elm Discuss" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected] <javascript:>.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>
>>
>

-- 
You received this message because you are subscribed to the Google Groups "Elm 
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to