Comments (2)
This is a good point. I think it's quite related to the discussion on #447 , isn't it? It's all about “what are natural things we can do with linear values”. The more we ask of Consumable
, Dupable
, etc… the less natural the function is.
Just like for sorting and stuff, dropWhile
seems to want to know something about a
without consuming a
(or consuming a
only in some cases). And it does all feel kind of icky in the world of linear types.
I have the feeling at the back of my head that, yes, there is some good principle that would cover a lot of theses cases. But I don't know. Of course, anything that changes the size of a list is going to have some amount of unnaturalness. But can we minimise? mapWhileJust
is clearly an improvement.
from linear-base.
Probably the biggest generalization is of span
.
spanly :: (a %1 -> Either c b) -> [a] %1 -> ([b], Maybe (c, [a]))
spanly f [] = ([], Nothing)
spanly f (x : xs) = case f x of
Right x' -> case spanly f xs of
(bs, mcas) -> (x' : bs, mcas)
Left x' -> ([], Just (x', xs))
Awkwardly, though, that's not lazy, and therefore really wants to produce a stream instead.
from linear-base.
Related Issues (20)
- Provide Ormolu via Nix HOT 6
- `linear-base` has a `streaming`-style `Stream` type. Should it have a `streaming-bytestring` style `ByteStream`? HOT 1
- Dispose with side effects HOT 9
- Fails to build with GHC 9.6 alpha2 HOT 19
- 0.3.1 doesn't build with GHC 9.0 HOT 3
- [Doc question] Definition of linear HOT 3
- Movable for amortized structures HOT 11
- Question: unrestricted list functions HOT 1
- Eq and Ord classes don't seem very useful HOT 3
- We're broken on master (929161943f19) HOT 7
- Remove cycle and repeat from Data.List.Linear HOT 11
- Add one or more queue/steque types HOT 5
- Lazy tuple workaround HOT 6
- Lens won't work as expected due to the missing `Functor (FUN 'One a)` instance (both `Data` and `Control`) HOT 3
- How ready is Linear Haskell for real world use cases? HOT 3
- linear-base-0.1.0 build failure with GHC 9.8 HOT 7
- Word does not have instances for the Data.Num.Linear typeclasses HOT 2
- Pull array index isn't safe HOT 2
- &, T tensor HOT 10
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from linear-base.