> For AI agents: the complete documentation index is available at /byethrow/ja/llms.txt, the full documentation bundle is available at /byethrow/ja/llms-full.txt.

# Function: sequence()

Processes multiple [Result](/byethrow/ja/api/types/Result.Result.md) or [ResultAsync](/byethrow/ja/api/types/Result.ResultAsync.md) values into a single result.
If all results are [Success](/byethrow/ja/api/types/Result.Success.md), returns a [Success](/byethrow/ja/api/types/Result.Success.md) containing all values.
If any result is a [Failure](/byethrow/ja/api/types/Result.Failure.md), immediately stops processing and returns a [Failure](/byethrow/ja/api/types/Result.Failure.md) with that single error.

Unlike [collect](/byethrow/ja/api/functions/Result.collect.md), which processes all results and collects all errors,
`sequence` stops at the first error and returns only that error.

## Type Param

**X**

The input type (object or array of Results).

## Examples

**Object of Results (all succeed)**

```ts
import { Result } from '@praha/byethrow';

const result = Result.sequence({
  name: Result.succeed('Alice'),
  age: Result.succeed(20),
});
// { type: 'Success', value: { name: 'Alice', age: 20 } }
```

**Object of Results (stops at first failure)**

```ts
import { Result } from '@praha/byethrow';

const result = Result.sequence({
  name: Result.succeed('Alice'),
  age: Result.fail('Invalid age'),
});
// { type: 'Failure', error: 'Invalid age' }
```

**Array of Results (all succeed)**

```ts
import { Result } from '@praha/byethrow';

const result = Result.sequence([
  Result.succeed(1),
  Result.succeed(2),
]);
// { type: 'Success', value: [1, 2, 3] }
```

**Array of Results (stops at first failure)**

```ts
import { Result } from '@praha/byethrow';

const result = Result.sequence([
  Result.succeed(1),
  Result.fail('error1'),
]);
// { type: 'Failure', error: 'error1' }
```

**Using a mapper function (all succeed)**

```ts
import { Result } from '@praha/byethrow';

const result = Result.sequence(['1', '2', '3'], (value) => {
  const number = Number(value);
  return Number.isNaN(number)
    ? Result.fail(`Invalid number: ${value}`)
    : Result.succeed(number);
});
// { type: 'Success', value: [1, 2, 3] }
```

**Using a mapper function (stops at first failure)**

```ts
import { Result } from '@praha/byethrow';

const result = Result.sequence(['1', 'invalid', '3'], (value) => {
  const number = Number(value);
  return Number.isNaN(number)
    ? Result.fail(`Invalid number: ${value}`)
    : Result.succeed(number);
});
// { type: 'Failure', error: 'Invalid number: invalid' }
```

## Call Signature

> **sequence**\<`X`>(`x`): [`ResultFor`](/byethrow/ja/api/types/Result.ResultFor.md)\<`X`\[keyof `X`], \{ \[K in string | number | symbol]: InferSuccess\<X\[K]> }, [`InferFailure`](/byethrow/ja/api/types/Result.InferFailure.md)\<`X`\[keyof `X`]>>

### Type Parameters

#### X

`X` _extends_ `Record`\<`string`, [`ResultMaybeAsync`](/byethrow/ja/api/types/Result.ResultMaybeAsync.md)\<`any`, `any`>>

### Parameters

#### x

`X`

### Returns

[`ResultFor`](/byethrow/ja/api/types/Result.ResultFor.md)\<`X`\[keyof `X`], \{ \[K in string | number | symbol]: InferSuccess\<X\[K]> }, [`InferFailure`](/byethrow/ja/api/types/Result.InferFailure.md)\<`X`\[keyof `X`]>>

## Call Signature

> **sequence**\<`X`>(`x`): [`ResultFor`](/byethrow/ja/api/types/Result.ResultFor.md)\<`X`\[`number`], \{ \[K in string | number | symbol]: InferSuccess\<X\[K]> }, [`InferFailure`](/byethrow/ja/api/types/Result.InferFailure.md)\<`X`\[`number`]>>

### Type Parameters

#### X

`X` _extends_ [`ResultMaybeAsync`](/byethrow/ja/api/types/Result.ResultMaybeAsync.md)\<`any`, `any`>\[]

### Parameters

#### x

`X`

### Returns

[`ResultFor`](/byethrow/ja/api/types/Result.ResultFor.md)\<`X`\[`number`], \{ \[K in string | number | symbol]: InferSuccess\<X\[K]> }, [`InferFailure`](/byethrow/ja/api/types/Result.InferFailure.md)\<`X`\[`number`]>>

## Call Signature

> **sequence**\<`X`>(`x`): [`ResultFor`](/byethrow/ja/api/types/Result.ResultFor.md)\<`X`\[`number`], \{ \[K in string | number | symbol]: InferSuccess\<X\[K]> }, [`InferFailure`](/byethrow/ja/api/types/Result.InferFailure.md)\<`X`\[`number`]>>

### Type Parameters

#### X

`X` _extends_ readonly [`ResultMaybeAsync`](/byethrow/ja/api/types/Result.ResultMaybeAsync.md)\<`any`, `any`>\[]

### Parameters

#### x

`X`

### Returns

[`ResultFor`](/byethrow/ja/api/types/Result.ResultFor.md)\<`X`\[`number`], \{ \[K in string | number | symbol]: InferSuccess\<X\[K]> }, [`InferFailure`](/byethrow/ja/api/types/Result.InferFailure.md)\<`X`\[`number`]>>

## Call Signature

> **sequence**\<`X`, `Fn`>(`x`, `fn`): [`ResultFor`](/byethrow/ja/api/types/Result.ResultFor.md)\<`ReturnType`\<`Fn`>, \{ \[K in string | number | symbol]: InferSuccess\<Fn> }, [`InferFailure`](/byethrow/ja/api/types/Result.InferFailure.md)\<`Fn`>>

### Type Parameters

#### X

`X` _extends_ `unknown`\[]

#### Fn

`Fn` _extends_ (`value`) => [`ResultMaybeAsync`](/byethrow/ja/api/types/Result.ResultMaybeAsync.md)\<`any`, `any`>

### Parameters

#### x

`X`

#### fn

`Fn`

### Returns

[`ResultFor`](/byethrow/ja/api/types/Result.ResultFor.md)\<`ReturnType`\<`Fn`>, \{ \[K in string | number | symbol]: InferSuccess\<Fn> }, [`InferFailure`](/byethrow/ja/api/types/Result.InferFailure.md)\<`Fn`>>

## Call Signature

> **sequence**\<`X`, `Fn`>(`x`, `fn`): [`ResultFor`](/byethrow/ja/api/types/Result.ResultFor.md)\<`ReturnType`\<`Fn`>, \{ \[K in string | number | symbol]: InferSuccess\<Fn> }, [`InferFailure`](/byethrow/ja/api/types/Result.InferFailure.md)\<`Fn`>>

### Type Parameters

#### X

`X` _extends_ readonly `unknown`\[]

#### Fn

`Fn` _extends_ (`value`) => [`ResultMaybeAsync`](/byethrow/ja/api/types/Result.ResultMaybeAsync.md)\<`any`, `any`>

### Parameters

#### x

`X`

#### fn

`Fn`

### Returns

[`ResultFor`](/byethrow/ja/api/types/Result.ResultFor.md)\<`ReturnType`\<`Fn`>, \{ \[K in string | number | symbol]: InferSuccess\<Fn> }, [`InferFailure`](/byethrow/ja/api/types/Result.InferFailure.md)\<`Fn`>>
