# Callable

```ts
type Callable = Operation<T> | Promise<T> | (() => Operation<T>) | (() => Promise<T>) | (() => T)
```

A uniform integration type representing anything that can be evaluated
as a the parameter to [call](https://frontside.com/effection/api/v3/call.md).

[call](https://frontside.com/effection/api/v3/call.md) converts a `Callable` into an `Operation` which can then be used
anywhere within Effection.

APIs that accept `Callable` values allow end developers to pass simple
functions without necessarily needing to know anything about Operations.

```javascript
function hello(to: Callable<string>): Operation<string> {
  return function*() {
    return `hello ${yield* call(to)}`;
  }
}

await run(() => hello(() => "world!")); // => "hello world!"
await run(() => hello(async () => "world!")); // => "hello world!"
await run(() => hello(function*() { return "world!" })); "hello world!";
```


### Type Parameters
T

[View code](https://github.com/thefrontside/effection/tree/effection-v3.6.1/lib/call.ts#L27)
