haskell / haskell/error-messages

Perhaps you want to use `pure`?

Open
#16 1 comment 0 reactions 0 assignees View on GitHub
status:Composing error message tool:GHC type:error-message
Dominant language
No language data
Stars
76
Forks
19
PR merge metrics
No merged PRs in 30d

Description

Given this code:

```haskell
initModelContext :: FrameworkConfig -> IO ModelContext
initModelContext FrameworkConfig { environment, dbPoolIdleTime, dbPoolMaxConnections, databaseUrl } = do
let isDevelopment = environment == Env.Development
modelContext <- (\modelContext -> modelContext { queryDebuggingEnabled = isDevelopment }) <$> createModelContext dbPoolIdleTime dbPoolMaxConnections databaseUrl
modelContext
```

GHC errors with:

```haskell
IHP/Server.hs:133:5: error:
• Couldn't match expected type ‘IO ModelContext’
with actual type ‘ModelContext’
• In a stmt of a 'do' block: modelContext
In the expression:
do let isDevelopment = environment == Env.Development
modelContext <- (\ modelContext
-> modelContext {queryDebuggingEnabled = isDevelopment})
<$>
createModelContext dbPoolIdleTime dbPoolMaxConnections databaseUrl
modelContext
In an equation for ‘initModelContext’:
initModelContext
FrameworkConfig {environment, dbPoolIdleTime, dbPoolMaxConnections,
databaseUrl}
= do let isDevelopment = ...
modelContext <- (\ modelContext
-> modelContext {queryDebuggingEnabled = isDevelopment})
<$>
createModelContext
dbPoolIdleTime dbPoolMaxConnections databaseUrl
modelContext
|
133 | modelContext
```

A better error message would be:

```haskell
IHP/Server.hs:133:5: error:
• Perhaps you meant `pure modelContext`?

Couldn't match expected type ‘IO ModelContext’
with actual type ‘ModelContext’
• In a stmt of a 'do' block: modelContext
In the expression:
do let isDevelopment = environment == Env.Development
modelContext <- (\ modelContext
-> modelContext {queryDebuggingEnabled = isDevelopment})
<$>
createModelContext dbPoolIdleTime dbPoolMaxConnections databaseUrl
modelContext
In an equation for ‘initModelContext’:
initModelContext
FrameworkConfig {environment, dbPoolIdleTime, dbPoolMaxConnections,
databaseUrl}
= do let isDevelopment = ...
modelContext <- (\ modelContext
-> modelContext {queryDebuggingEnabled = isDevelopment})
<$>
createModelContext
dbPoolIdleTime dbPoolMaxConnections databaseUrl
modelContext
|
133 | modelContext
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.