# Function: map()

Applies a transformation function to the success value of a [Result](../types/Result.Result.md) or [ResultAsync](../types/Result.ResultAsync.md).
If the input is a [Failure](../types/Result.Failure.md), it will be returned unchanged.

## Type Param

**R1**

The input [Result](../types/Result.Result.md) or [ResultAsync](../types/Result.ResultAsync.md).

## Type Param

**T2**

The transformed success value type.

## Examples

**Success Case**

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

const result = Result.pipe(
  Result.succeed(2),
  Result.map((x) => x * 10),
);
// { type: 'Success', value: 20 }
```

**Failure Case (unchanged)**

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

const result = Result.pipe(
  Result.fail('error'),
  Result.map((x) => x * 10),
);
// { type: 'Failure', error: 'error' }
```

## See

[pipe](./Result.pipe.md) - It is recommended to use this function with the [pipe](./Result.pipe.md) function for better readability and composability.

## Call Signature

> **map**\<`R1`, `T2`>(`fn`): (`result`) => [`ResultFor`](../types/Result.ResultFor.md)\<`R1`, `T2`, [`InferFailure`](../types/Result.InferFailure.md)\<`R1`>>

### Type Parameters

#### R1

`R1` _extends_ [`ResultMaybeAsync`](../types/Result.ResultMaybeAsync.md)\<`any`, `any`>

#### T2

`T2`

### Parameters

#### fn

(`a`) => `T2`

### Returns

(`result`) => [`ResultFor`](../types/Result.ResultFor.md)\<`R1`, `T2`, [`InferFailure`](../types/Result.InferFailure.md)\<`R1`>>

## Call Signature

> **map**\<`T1`, `T2`>(`fn`): \<`R1`>(`result`) => [`ResultFor`](../types/Result.ResultFor.md)\<`R1`, `T2`, [`InferFailure`](../types/Result.InferFailure.md)\<`R1`>>

### Type Parameters

#### T1

`T1`

#### T2

`T2`

### Parameters

#### fn

(`a`) => `T2`

### Returns

\<`R1`>(`result`) => [`ResultFor`](../types/Result.ResultFor.md)\<`R1`, `T2`, [`InferFailure`](../types/Result.InferFailure.md)\<`R1`>>
