u/ghkbrew

196 post karma · 2,953 comment karma · joined Feb 2014

ghkbrew

Does lean not collect cycles? Or have some way of statically preventing them?

ghkbrew

I'd probably go with generic fortress mob farm. How "nether-only" are we talking? The easy high efficiency ones tend to use portals. Like a ianxofour's peer pressure farm.

ghkbrew

Why does named arguments have to affect the function's type?

Well, they don't have to, but if named arguments can be supplied out of order (or are optional) then the compiler needs to know which parameters name. So that information needs to be part of the function's type in some way.

Doesn't it still have one canonical argument list?

That depends on your type system.

A type is basically a description of how you can use a value. For example, if f has type (Int, String) -> Bool, that tells you that you can apply f to an Int and a String, in that order, and get a Bool back.

More generally, the typing rule for function application is roughly:

f : (A, B) -> C
x : A
y : B
---------------
f(x, y) : C

Now suppose you want f(y: "hello", x: 42) to be valid. You can't determine that from the type (Int, String) -> Bool, because that type says nothing about x or y. You need something more like (x: Int, y: String) -> Bool.

And once the names are part of the type, you have to decide what it means for two such function types to be compatible. Is (a: Int) -> Bool the same type as (b: Int) -> Bool? Can a function accepting (x: Int, y: String) be used where one accepting just (x: Int) is expected if y is optional? If labels themselves are optional, is (x: Int) -> Bool also callable as (Int) -> Bool? 

Things get even more hairy if you want type inference.  What is the most general type of f in f(x: 2)? Is it just (x: Int) -> a, or can f accept additional named arguments that aren't present at this call site? If so, you need something more like (x: Int, ...r) -> a, where r is a type-level variable representing an unknown set of additional parameters. Now your type inference has to infer and unify those parameter rows, including which names are present, absent, or optional. That's essentially where row polymorphism enters the picture.

That's the can of worms the parent comment is referring to. You can keep labels out of the type system, but then you generally have to restrict where they can be used. For example, only when calling a statically known function declaration whose parameter names the compiler can look up directly.

ghkbrew

It complicates the function type quite a bit. Instead of a function type containing a return type and a list of argument types, it now also includes a set of named argument types. And then you need to start considering things like sub-typing and row-polymorphism. Especially if using the name of an argument is optional.

ghkbrew

Nah, you had the dupe deconstruct an isolated tile and drop himself and 800kg of refined metal to the bottom of the world ocean where he then built an underwater rocket pad. Then drained the entire ocean into a 2x2 water tank using an Escher waterfall. Then dug up the graphite which had been your original goal and left the planet forever.

ghkbrew

They can now, but that's relatively recent. I think Klei has been intentionally relaxing that rule.

ghkbrew

Yeah, it's a video game not the Internet!

ghkbrew

No it just marks the current game as having used debug. Your previous save should still be "clean" and allow achievements.

ghkbrew

A nice trick is to make the storage chamber out of a double layer of gold tiles and insulated tiles. The gold has such low SHC that it cools down much faster than the diamond (and especially insulated igneous). But the because it's solid-solid transmission, there effectively 0 heat transfer between the gold tiles and the insulated tiles.

ghkbrew

Barely any though. Those valves can be set to something like 10g/s.

ghkbrew

The one benefit is having the witches in carts means they can't despawn on the way to the killing chamber. It should be a slight improvement in rates.

ghkbrew

*Joules

ghkbrew

I was getting this error too, immediately after setting up a new Q7 M5+. The error persisted for about a day, but I just tried clearing the cache in the app ( profile > more setting > clear cache).  It's working now, but I didn't think to try entering the device page before hand so I can't really if that fixed it or they did something on their end (or both).

ghkbrew

I don't think whether the witch is in the structure bounding box actually matters. It's not like a spawner. They're really only limited by the mob cap. But with such small spawning space it's basically impossible to fill the mob cap with witches. So even simple water flushing designs will have nearly the same put as shifting floor designs or Docm's ai manipulation techniques.

ghkbrew

I don't know but you might try limiting it with the usual claim-permissions mods. If the schematicannon uses a fake player to place blocks that could work. Another idea is limiting the positioned schematic item somehow. I'm guessing the item carries it's coordinates in its data which you could do some scripting to limit. E.g delete any placed schematic item which is out of bounds.

ghkbrew

You can keep them as independent contraptions (top rotor not connected to spinning part of lower rotor) and keep them coaxial. Connect to top rotor with a shaft that goes beside the bottom rotor. Then, make the inner-most ring of blocks of the lower rotor out of something without without collision (string, open fence gates, copy cats+ ghost blocks). They'll spin right through your connecting shaft.

ghkbrew

You don't need smart batteries for the refinery initially. It will just run until the large batteries are empty then interrupt the task. It keeps progress though. 

Adding a smart battery with a not gate to disable the the refinery makes things more efficient by preventing dupes from coming over to picking up the task when there's barely any power. Set it to something like 95%/5%

ghkbrew

As a general rule, you can either put more consumers than the wire can handle, or put a battery on the wire. Never do both. And you're right, transformers count as a consumer on their input side.

What I usually do early game is: Heavy heavy watt wire with generators and batteries -> transformer -> 1kW wire distribution to all my consumers -> transformer -> heavy watt wire with the metal refinery and a couple batteries.

The metal refinery batteries will trickle charge when there's less than 1kW of load on the distribution wire the you can do a load or two of metal until the batteries drain.

Later you can add parallel 1kW distribution wires as your generation capacity grows.

ghkbrew

Someone else did the math. It's something like 1.1 cauldrons per blaze burner.

ghkbrew

I think that's just not something they expected the player to need. Initially the planetarium was the only way to consume data banks so there was no need to.  If there isn't an "empty storage" button, your best bet is probably deconstructing it.

ghkbrew

I don't think you can use the possibility of rape as a "get out of jail free" card in a reasonable world view and stay logically consistent. Imagine applying this logic to other situations: "You can't ask me why I killed that man. He might have been trying to rape me". "Yes killing grown men is murder, but we can't make a woman go to trial to prove he was trying to rape her. We have to allow women to murder men so that attempted rape victims can murder men while maintaining their privacy".

If you truly believe that "Just because the baby hasn’t been born yet, doesn’t make it any better." Then the above hypothetical is no worse than abortion. But I suspect you don't think that. Your argument implicitly places less moral weight on the murder (your word) of the unborn.

ghkbrew

Why not just heat the pwater directly (put the tepidizer in it) and have the mucin on top? Liquid-liquid conduction is super fast anyway. And you don't get flaking if there's no hot solid tiles around.

ghkbrew

Always have as far as I'm aware. You just have to avoid harvesting them (disable auto harvest). So you're forgoing some easy calories.

ghkbrew

muckroot does count

ghkbrew

I like to put a minimum size nature reserve in front of the bathrooms, since it basically guarantees a dupe will walk through it once a cycle to keep up the buff. 

Another popular choice is to make part or all of your main ladder way into a reserve. That has similar benefits, but isn't quite as guaranteed as the bathrooms