Giter VIP home page Giter VIP logo

Comments (10)

mattpodwysocki avatar mattpodwysocki commented on May 11, 2024

@dacz I agree it would be nice, will investigate for an FP variant

from ixjs.

graingert avatar graingert commented on May 11, 2024

can we also support _.flow or provide a flow/compose function:

// Current
const results = of(1, 2, 3)
  .chain(source => filter(source, x => x % 2 === 0))
  .chain(source => map(source, x => x * x));

import * as ix from 'ix/fp/es';
import flow from 'lodash.flow';
// Possible with args switched (and curried)
const results = ix.flow(
  v => ix.of(...v),
  ix.filter(x => x % 2 === 0),
  ix.map(x => x * x),
)([1, 2, 3]);

assert(ix.flow === flow);

from ixjs.

mattpodwysocki avatar mattpodwysocki commented on May 11, 2024

@dacz @graingert is the pipe mechanism we have good enough or do we need more?

from ixjs.

graingert avatar graingert commented on May 11, 2024

@mattpodwysocki I'd like to be able to use a flow function to create other functions:

import * as ix from 'ix/fp/es';

const process = ix.flow(
  v => ix.of(...v),
  ix.filter(x => x % 2 === 0),
  ix.map(x => x * x),
);

process([1, 2, 3]); // a new iterable.

(eg I'd like to be able to use the whole of IxJS without ever calling a method, or worrying about this)

from ixjs.

graingert avatar graingert commented on May 11, 2024

and if/when |> is released I'd like to be able to use that.

import * as ix from 'ix/fp/es';

const process = v => ix.of(...v)
  |> ix.filter(x => x % 2 === 0)
  |> ix.map(x => x * x)
);

process([1, 2, 3]); // a new iterable.

from ixjs.

mattpodwysocki avatar mattpodwysocki commented on May 11, 2024

@graingert that's already supported since source would be the first applied argument as described in the proposal

import { AsyncIterableX as AsyncIterable } from 'ix';
import { map, filter } from 'ix/asynciterable';

const process = v => AsyncIterable.of(...v)
  |> _ => filter(_, x => x % 2 === 0)
  |> _ => map(_, x => x * x)
);

process([1, 2, 3]);

Or you can use the pipe operators.

import { AsyncIterableX as AsyncIterable } from 'ix';
import { map, filter } from 'ix/asynciterable/pipe';

const process = v => AsyncIterable.of(...v)
  |> filter(x => x % 2 === 0)
  |> map(x => x * x)
);

process([1, 2, 3]);

from ixjs.

graingert avatar graingert commented on May 11, 2024

@mattpodwysocki ah good stuff. how about a single namespace to import from?

from ixjs.

mattpodwysocki avatar mattpodwysocki commented on May 11, 2024

@graingert that's why we have an index.ts in each area root for just that purpose, as well as the piped.

from ixjs.

graingert avatar graingert commented on May 11, 2024

@mattpodwysocki I mean the whole library in fp/pipe form. Currently you're doing it like:

import { AsyncIterableX as AsyncIterable } from 'ix';
import { map, filter } from 'ix/asynciterable/pipe';

I want:

import { * as ix } from 'ix/fp';

from ixjs.

trxcllnt avatar trxcllnt commented on May 11, 2024

@graingert the present structure is in place to support all three styles. At a minimum operators for the iterable/asyncIterable will stay separate, since they share names. Importing everything from the root is convenient, but won't tree shake.

from ixjs.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.