gedhrel

joined 2 years ago
[–] gedhrel@lemmy.world 4 points 2 weeks ago

The leadership contest uses ranked preference voting. There's no vote-splitting.

[–] gedhrel@lemmy.world 1 points 2 weeks ago (1 children)

Neither covariant nor contravariant.

supertype[] is not a supertype of subtype[] if supertype and subtype alone are in that relationship, because the mutability of arrays means that the Liskov substitution principle doesn't hold.

(These are all something you'll probably find good explanations of on Wikipedia.)

[–] gedhrel@lemmy.world 0 points 1 month ago

That's not realistic or "fair" - most Haskell projects will use a dozen or so extensions easily. GHC has been a platform for language experimentation for a long time; standardisation efforts keep on cropping up in annual surveys. (Eg, swapping in Text for String in base is long overdue, but it's a hold over from days where FP pedagogy was seen as more important.)

[–] gedhrel@lemmy.world 2 points 2 months ago

I was very nearly in the same boat. The initial box dialogue was written by and for angry 14-year-old boys. It gets massively better; the characterisation is broad and engaging, and the central-european fairy-rail feel is really quite strong. The two pieces of DLC have great stories themselves.

[–] gedhrel@lemmy.world 7 points 4 months ago (4 children)

Unfortunately high. It's the same reason there's a "space force". He didn't know about the coastguard and guessed something else, then doubled down.

[–] gedhrel@lemmy.world 8 points 4 months ago

They haven't been charged.

[–] gedhrel@lemmy.world 3 points 5 months ago

That's a good point. You can get away with that with a new language, but adding nullability as a non-default option would break existing code much like making things const by default in C++ would, I suppose.

[–] gedhrel@lemmy.world 2 points 5 months ago (2 children)

Lombok had a bunch of great things that should've been part of the java language to begin with. They've slowly been folded in (so now you have to work out which @NotNull annotation you want) but the language does still improve.

[–] gedhrel@lemmy.world 12 points 5 months ago

At least the potential sentence is long enough to get a jury.

[–] gedhrel@lemmy.world 24 points 5 months ago

It's one reason the government is so keen to reduce jury trials. Because nobody is going to send granny down for holding a piece of cardboard.

[–] gedhrel@lemmy.world 3 points 5 months ago

More like "I am the wellspring from which you flow," which is, let's face it, infinitely cooler.

[–] gedhrel@lemmy.world 1 points 5 months ago

Haskell, part 2

I broke down the outline into a set of boxes by scanning over them.

type Box = (C, C) -- inclusive coordinates
makeBoxes :: [C] -> [Box]
makeBoxes cs =
    let cs' = sort cs -- left-to-right first, top-to-bottom second
        scanLines = cs' & groupOn fst
     in scanOver 0 [] scanLines
  where
    scanOver lastX currentYs [] = []
    scanOver lastX currentYs (new : rest) =
        let newX = new & head & fst
            closedBoxes = do
                [y1, y2] <- currentYs & chunksOf 2
                pure ((lastX, y1), (newX, y2))
            newYs =
                -- Take the new column and remove anything that
                -- corresponds to a y value that appears in both
                merge currentYs (map snd new)
         in -- Close the current boxes
            closedBoxes ++ scanOver newX newYs rest
    merge [] ns = ns
    merge ms [] = ms
    merge (m : ms) (n : ns)
        | m < n = m : merge ms (n : ns)
        | m > n = n : merge (m : ms) ns
        | otherwise = merge ms ns

The fiddly bit was handling all the cases for shape subtraction. I don't give it here because it's just a slog, but the gist is this:

type Shape = [Box]
subtractBox :: Box -> Box -> Shape -- returns whatever's left

subtractShape :: Shape -> Shape -> Shape -- this is just a fold.

The idea: take a bounding box that's just large enough to cover all coordinates. From that, subtract the set of boxes above. You get a set of boxes that are in the "outside", ie, illegal region. [I did it this way because managing shape subtraction from the set of "inside" boxes is just more work.]

Then for each candidate rectangle, if it overlaps with any of the "out-of-bounds" boxes, it's not a solution.

view more: next ›