Closed Archill-56 closed 10 months ago
Hi, thank you for your bug report!
Can you describe your project in a bit more detail? It seems you have a set of files that are unrelated to each other, right? You are not trying to import these between each other?
Also, do you truly have no auto-completions? In a file that compiles successfully, what happens if press ctrl + space
? It should show functions relevant to your context, e.g. functions from base
.
HI fendor, thank you for your response.
You are correct, all the files are unrelated to each other. They are files containing learning code from the book Get Programming with Haskell by Will Kurt. No importing is happening between those files. The files have some imports from libraries such as Data.List, Data.Map and Data.Maybe and so on.
When I press ctrl + space, a toolbox window appears below my cursor saying Loading...
On a side note, auto completion works for my elm projects.
Can you include VSCode logs, obtained via this: https://github.com/haskell/vscode-haskell#investigating-and-reporting-problems Open a project, and try to trigger the completions. Then paste the logs here again, please :)
Sure, here they are:
Hm, it seems, whatever is wrong, must be with HLS and not the vscode plugin. For more exposure, I'm moving the issue to the main repo.
Do you have a project where we can try to reproduce the issue?
Here is a test project that should do the job: https://github.com/Archill-56/HaskellTest
Though, I should mention that my problem has become worse. Now there is no type info showing up when I hover on top of types.
Be sure to open the folder in VSCode via "Open Folder [Ctrl+k Ctrl+o]" option.
Your project works for me locally with cabal.
Tried to open the folder in VSCode via "Open Folder [Ctrl+k Ctrl+o]" option just now. No difference - no auto completion and the hover info is gone as well. Might this issue arise from:
Previously, the hover info worked for me only when I started VSCode in the terminal using "code ." while being in the project folder in the terminal. Otherwise the hover info did not work for me previously. Now, on matter how I start VSCode or open the project, the hover info is gone.
New thing for me is that now there is a error in VSCode saying "Project requires HLS but isn't isntalled. Using command "ghcup tui" shows me that I have installed and set the following: GHCup 0.1.19.2, Stack 2.9.1, HLS 1.8.0.0, cabal 3.6.2.0 and GHC 8.10.7
I think this is most likely a setup issue, maybe a combination of PATH shenanigans and stuff like that.
Can you provide for your test-project the vscode logs again, please? I am hoping to gain some insights by being able to compare the logs 1:1. https://github.com/haskell/vscode-haskell#investigating-and-reporting-problems
Sure! Here they are and thank you so much for helping me out.
Looks like GHCup is in some inconsistent state, see the error message of ghcup whereis hls 1.9.1.0
. Try re-installing hls with ~ghcup install ghc 1.9.1.0 --force
~ ghcup install hls 1.9.1.0 --force
.
It gives out an error when I try to do that.
@hasufell Ideas about this error?
ghcup install ghc 1.9.1.0 --force
Yes, there is no GHC version 1.9.1.0.
Sorry, I literally copy pasted the command without looking at it. Now I did the following command: ghcup install hls 1.9.1.0 --force
It installed it fine. Type info shows up once again on hover. Auto completion doesn't.
Closing as it's an old support issue
Your environment
Which OS do you use:
RETTY_NAME="Debian GNU/Linux bookworm/sid" NAME="Debian GNU/Linux" VERSION_CODENAME=bookworm ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/"
Steps to reproduce
I have no clue how to reproduce this issue. When ever I write a function and try to use it somewhere, I have to manually type the name of the function and no auto completion appears.
Expected behaviour
Haskell extension should give me auto completion suggestions.
Actual behaviour
There are no auto completion suggestions given.
Include debug information
Execute in the root of your project the command
haskell-language-server-wrapper --debug .
and paste the logs here (you can find the executable location here):Logs
``` Launching haskell-language-server exe at:/home/username/.ghcup/bin/haskell-language-server-8.10.7 2023-01-27T09:00:39.153907Z | Info | No log file specified; using stderr. 2023-01-27T09:00:39.156108Z | Info | haskell-language-server version: 1.8.0.0 (GHC: 8.10.7) (PATH: /home/username/.ghcup/hls/1.8.0.0/lib/haskell-language-server-1.8.0.0/bin/haskell-language-server-8.10.7) 2023-01-27T09:00:39.157634Z | Info | Directory: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3 2023-01-27T09:00:39.158529Z | Info | Logging heap statistics every 60.00s ghcide setup tester in /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3. Report bugs at https://github.com/haskell/haskell-language-server/issues Step 1/4: Finding files to test in /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3 Found 5 files Step 2/4: Looking for hie.yaml files that control setup Found 1 cradle () Step 3/4: Initializing the IDE 2023-01-27T09:00:39.185522Z | Debug | Initializing exports map from hiedb 2023-01-27T09:00:39.193775Z | Debug | Shake session initialized Step 4/4: Type checking the files 2023-01-27T09:00:39.195907Z | Debug | Done initializing exports map from hiedb. Size: 0 2023-01-27T09:00:39.199655Z | Info | Cradle path: lesson18.hs 2023-01-27T09:00:39.199901Z | Warning | No [cradle](https://github.com/mpickering/hie-bios#hie-bios) found for lesson18.hs. Proceeding with [implicit cradle](https://hackage.haskell.org/package/implicit-hie). You should ignore this message, unless you see a 'Multi Cradle: No prefixes matched' error. 2023-01-27T09:00:39.211930Z | Debug | Cradle: Cradle {cradleRootDir = "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3", cradleOptsProg = CradleAction: Default} 2023-01-27T09:00:39.295836Z | Debug | Session loading result: Right (ComponentOptions {componentOptions = ["-dynamic"], componentRoot = "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3", componentDependencies = []},"/home/username/.ghcup/ghc/8.10.7/lib/ghc-8.10.7") 2023-01-27T09:00:39.368172Z | Info | Interface files cache directory: /home/username/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda 2023-01-27T09:00:39.368991Z | Info | Making new HscEnv. In-place unit ids: [main] 2023-01-27T09:00:39.378971Z | Debug | New component cache HscEnvEq: (([],Just HscEnvEq 5),fromList []) 2023-01-27T09:00:39.379271Z | Debug | Known files updated: fromList [(TargetFile NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs",fromList ["/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs"])] 2023-01-27T09:00:39.379818Z | Debug | Finished build session AsyncCancelled 2023-01-27T09:00:39.379988Z | Debug | Restarting build session due to new component Action Queue: [User TypeCheck] Keys: [GetKnownTargets; , GhcSessionIO; ] Aborting previous build session took 0.00s 2023-01-27T09:00:39.382633Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson19.hs" 2023-01-27T09:00:39.382805Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs" 2023-01-27T09:00:39.382914Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs" 2023-01-27T09:00:39.383187Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs" 2023-01-27T09:00:39.394902Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson20.hs" 2023-01-27T09:00:39.494799Z | Info | Cradle path: lesson17.hs 2023-01-27T09:00:39.494996Z | Warning | No [cradle](https://github.com/mpickering/hie-bios#hie-bios) found for lesson17.hs. Proceeding with [implicit cradle](https://hackage.haskell.org/package/implicit-hie). You should ignore this message, unless you see a 'Multi Cradle: No prefixes matched' error. 2023-01-27T09:00:39.506103Z | Debug | Cradle: Cradle {cradleRootDir = "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3", cradleOptsProg = CradleAction: Default} 2023-01-27T09:00:39.958252Z | Debug | Session loading result: Right (ComponentOptions {componentOptions = ["-dynamic"], componentRoot = "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3", componentDependencies = []},"/home/username/.ghcup/ghc/8.10.7/lib/ghc-8.10.7") 2023-01-27T09:00:40.051135Z | Debug | Using extensions for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs": [ MonomorphismRestriction , RelaxedPolyRec , ForeignFunctionInterface , ImplicitPrelude , DoAndIfThenElse , EmptyDataDecls , PatternGuards , NondecreasingIndentation , TraditionalRecordSyntax , EmptyCase , StarIsType , CUSKs ] 2023-01-27T09:00:40.113623Z | Info | Interface files cache directory: /home/username/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda 2023-01-27T09:00:40.113813Z | Info | Interface files cache directory: /home/username/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda 2023-01-27T09:00:40.113928Z | Info | Making new HscEnv. In-place unit ids: [main, main] 2023-01-27T09:00:40.120854Z | Debug | New component cache HscEnvEq: (([],Just HscEnvEq 8),fromList []) 2023-01-27T09:00:40.121485Z | Debug | New component cache HscEnvEq: (([],Just HscEnvEq 9),fromList []) 2023-01-27T09:00:40.124692Z | Debug | Known files updated: fromList [(TargetFile NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs",fromList ["/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs"]),(TargetFile NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs",fromList ["/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs"])] 2023-01-27T09:00:40.314762Z | Debug | Finished build session AsyncCancelled 2023-01-27T09:00:40.314885Z | Debug | Restarting build session due to new component Action Queue: [User TypeCheck] Keys: [GetKnownTargets; , GhcSessionIO; ] Aborting previous build session took 0.19s 2023-01-27T09:00:40.315151Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson19.hs" 2023-01-27T09:00:40.315260Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs" 2023-01-27T09:00:40.315359Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs" 2023-01-27T09:00:40.315459Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs" 2023-01-27T09:00:40.315716Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson20.hs" 2023-01-27T09:00:40.316954Z | Info | Cradle path: lesson16.hs 2023-01-27T09:00:40.317119Z | Warning | No [cradle](https://github.com/mpickering/hie-bios#hie-bios) found for lesson16.hs. Proceeding with [implicit cradle](https://hackage.haskell.org/package/implicit-hie). You should ignore this message, unless you see a 'Multi Cradle: No prefixes matched' error. 2023-01-27T09:00:40.322648Z | Debug | Cradle: Cradle {cradleRootDir = "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3", cradleOptsProg = CradleAction: Default} 2023-01-27T09:00:40.399568Z | Debug | Session loading result: Right (ComponentOptions {componentOptions = ["-dynamic"], componentRoot = "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3", componentDependencies = []},"/home/username/.ghcup/ghc/8.10.7/lib/ghc-8.10.7") 2023-01-27T09:00:40.450224Z | Info | Interface files cache directory: /home/username/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda 2023-01-27T09:00:40.450394Z | Info | Interface files cache directory: /home/username/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda 2023-01-27T09:00:40.450480Z | Info | Interface files cache directory: /home/username/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda 2023-01-27T09:00:40.450552Z | Info | Making new HscEnv. In-place unit ids: [main, main, main] 2023-01-27T09:00:40.460121Z | Debug | New component cache HscEnvEq: (([],Just HscEnvEq 11),fromList []) 2023-01-27T09:00:40.460261Z | Debug | New component cache HscEnvEq: (([],Just HscEnvEq 12),fromList []) 2023-01-27T09:00:40.460315Z | Debug | New component cache HscEnvEq: (([],Just HscEnvEq 13),fromList []) 2023-01-27T09:00:40.460443Z | Debug | Known files updated: fromList [(TargetFile NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs",fromList ["/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs"]),(TargetFile NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs",fromList ["/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs"]),(TargetFile NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs",fromList ["/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs"])] 2023-01-27T09:00:40.461009Z | Debug | Finished build session AsyncCancelled 2023-01-27T09:00:40.461198Z | Debug | Restarting build session due to new component Action Queue: [User TypeCheck] Keys: [GetKnownTargets; , GhcSessionIO; ] Aborting previous build session took 0.00s 2023-01-27T09:00:40.461541Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson19.hs" 2023-01-27T09:00:40.461732Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs" 2023-01-27T09:00:40.461701Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs" 2023-01-27T09:00:40.462223Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson20.hs" 2023-01-27T09:00:40.462251Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs" 2023-01-27T09:00:40.464133Z | Info | Cradle path: lesson19.hs 2023-01-27T09:00:40.464442Z | Warning | No [cradle](https://github.com/mpickering/hie-bios#hie-bios) found for lesson19.hs. Proceeding with [implicit cradle](https://hackage.haskell.org/package/implicit-hie). You should ignore this message, unless you see a 'Multi Cradle: No prefixes matched' error. 2023-01-27T09:00:40.476512Z | Debug | Cradle: Cradle {cradleRootDir = "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3", cradleOptsProg = CradleAction: Default} 2023-01-27T09:00:40.478872Z | Debug | Using extensions for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs": [ MonomorphismRestriction , RelaxedPolyRec , ForeignFunctionInterface , ImplicitPrelude , DoAndIfThenElse , EmptyDataDecls , PatternGuards , NondecreasingIndentation , TraditionalRecordSyntax , EmptyCase , StarIsType , CUSKs ] 2023-01-27T09:00:40.511366Z | Info | updateFileDiagnostics published different from new diagnostics - file diagnostics: File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs Hidden: no Range: 2:30-2:36 Source: stan Severity: DsHint Message: ✲ Name: Data types with non-strict fields ✲ Description: Defining lazy fields in data types can lead to unexpected space leaks ✲ Severity: Performance ✲ Category: #SpaceLeak #Syntax Possible solutions: - Add '!' before the type, e.g. !Int or !(Maybe Bool) - Enable the 'StrictData' extension: {-# LANGUAGE StrictData #-} File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs Hidden: no Range: 2:37-2:43 Source: stan Severity: DsHint Message: ✲ Name: Data types with non-strict fields ✲ Description: Defining lazy fields in data types can lead to unexpected space leaks ✲ Severity: Performance ✲ Category: #SpaceLeak #Syntax Possible solutions: - Add '!' before the type, e.g. !Int or !(Maybe Bool) - Enable the 'StrictData' extension: {-# LANGUAGE StrictData #-} File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs Hidden: no Range: 4:20-4:26 Source: stan Severity: DsHint Message: ✲ Name: Data types with non-strict fields ✲ Description: Defining lazy fields in data types can lead to unexpected space leaks ✲ Severity: Performance ✲ Category: #SpaceLeak #Syntax Possible solutions: - Add '!' before the type, e.g. !Int or !(Maybe Bool) - Enable the 'StrictData' extension: {-# LANGUAGE StrictData #-} File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs Hidden: no Range: 4:27-4:33 Source: stan Severity: DsHint Message: ✲ Name: Data types with non-strict fields ✲ Description: Defining lazy fields in data types can lead to unexpected space leaks ✲ Severity: Performance ✲ Category: #SpaceLeak #Syntax Possible solutions: - Add '!' before the type, e.g. !Int or !(Maybe Bool) - Enable the 'StrictData' extension: {-# LANGUAGE StrictData #-} File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs Hidden: no Range: 4:34-4:37 Source: stan Severity: DsHint Message: ✲ Name: Data types with non-strict fields ✲ Description: Defining lazy fields in data types can lead to unexpected space leaks ✲ Severity: Performance ✲ Category: #SpaceLeak #Syntax Possible solutions: - Add '!' before the type, e.g. !Int or !(Maybe Bool) - Enable the 'StrictData' extension: {-# LANGUAGE StrictData #-} File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs Hidden: no Range: 8:9-8:29 Source: stan Severity: DsHint Message: ✲ Name: Data types with non-strict fields ✲ Description: Defining lazy fields in data types can lead to unexpected space leaks ✲ Severity: Performance ✲ Category: #SpaceLeak #Syntax Possible solutions: - Add '!' before the type, e.g. !Int or !(Maybe Bool) - Enable the 'StrictData' extension: {-# LANGUAGE StrictData #-} File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs Hidden: no Range: 9:9-9:23 Source: stan Severity: DsHint Message: ✲ Name: Data types with non-strict fields ✲ Description: Defining lazy fields in data types can lead to unexpected space leaks ✲ Severity: Performance ✲ Category: #SpaceLeak #Syntax Possible solutions: - Add '!' before the type, e.g. !Int or !(Maybe Bool) - Enable the 'StrictData' extension: {-# LANGUAGE StrictData #-} File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs Hidden: no Range: 10:9-10:24 Source: stan Severity: DsHint Message: ✲ Name: Data types with non-strict fields ✲ Description: Defining lazy fields in data types can lead to unexpected space leaks ✲ Severity: Performance ✲ Category: #SpaceLeak #Syntax Possible solutions: - Add '!' before the type, e.g. !Int or !(Maybe Bool) - Enable the 'StrictData' extension: {-# LANGUAGE StrictData #-} File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs Hidden: no Range: 11:9-11:20 Source: stan Severity: DsHint Message: ✲ Name: Data types with non-strict fields ✲ Description: Defining lazy fields in data types can lead to unexpected space leaks ✲ Severity: Performance ✲ Category: #SpaceLeak #Syntax Possible solutions: - Add '!' before the type, e.g. !Int or !(Maybe Bool) - Enable the 'StrictData' extension: {-# LANGUAGE StrictData #-} File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs Hidden: no Range: 12:9-12:24 Source: stan Severity: DsHint Message: ✲ Name: Data types with non-strict fields ✲ Description: Defining lazy fields in data types can lead to unexpected space leaks ✲ Severity: Performance ✲ Category: #SpaceLeak #Syntax Possible solutions: - Add '!' before the type, e.g. !Int or !(Maybe Bool) - Enable the 'StrictData' extension: {-# LANGUAGE StrictData #-} File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs Hidden: no Range: 17:9-17:28 Source: stan Severity: DsHint Message: ✲ Name: Data types with non-strict fields ✲ Description: Defining lazy fields in data types can lead to unexpected space leaks ✲ Severity: Performance ✲ Category: #SpaceLeak #Syntax Possible solutions: - Add '!' before the type, e.g. !Int or !(Maybe Bool) - Enable the 'StrictData' extension: {-# LANGUAGE StrictData #-} File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs Hidden: no Range: 18:9-18:27 Source: stan Severity: DsHint Message: ✲ Name: Data types with non-strict fields ✲ Description: Defining lazy fields in data types can lead to unexpected space leaks ✲ Severity: Performance ✲ Category: #SpaceLeak #Syntax Possible solutions: - Add '!' before the type, e.g. !Int or !(Maybe Bool) - Enable the 'StrictData' extension: {-# LANGUAGE StrictData #-} 2023-01-27T09:00:40.573450Z | Debug | Session loading result: Right (ComponentOptions {componentOptions = ["-dynamic"], componentRoot = "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3", componentDependencies = []},"/home/username/.ghcup/ghc/8.10.7/lib/ghc-8.10.7") 2023-01-27T09:00:40.658850Z | Info | Interface files cache directory: /home/username/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda 2023-01-27T09:00:40.658976Z | Info | Interface files cache directory: /home/username/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda 2023-01-27T09:00:40.659046Z | Info | Interface files cache directory: /home/username/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda 2023-01-27T09:00:40.659126Z | Info | Interface files cache directory: /home/username/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda 2023-01-27T09:00:40.659199Z | Info | Making new HscEnv. In-place unit ids: [main, main, main, main] 2023-01-27T09:00:40.666006Z | Debug | New component cache HscEnvEq: (([],Just HscEnvEq 16),fromList []) 2023-01-27T09:00:40.666139Z | Debug | New component cache HscEnvEq: (([],Just HscEnvEq 17),fromList []) 2023-01-27T09:00:40.666198Z | Debug | New component cache HscEnvEq: (([],Just HscEnvEq 18),fromList []) 2023-01-27T09:00:40.666250Z | Debug | New component cache HscEnvEq: (([],Just HscEnvEq 19),fromList []) 2023-01-27T09:00:40.666381Z | Debug | Known files updated: fromList [(TargetFile NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson19.hs",fromList ["/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson19.hs"]),(TargetFile NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs",fromList ["/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs"]),(TargetFile NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs",fromList ["/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs"]),(TargetFile NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs",fromList ["/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs"])] 2023-01-27T09:00:40.666958Z | Debug | Finished build session AsyncCancelled 2023-01-27T09:00:40.667123Z | Debug | Restarting build session due to new component Action Queue: [User TypeCheck] Keys: [ GetKnownTargets; , GetModificationTime; /home/username/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda/_home_username_Documents_Koodausopiskelua_GetProgrammingWithHaskell_Unit3_lesson16/hs.hie , GhcSessionIO; ] Aborting previous build session took 0.00s 2023-01-27T09:00:40.667637Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson19.hs" 2023-01-27T09:00:40.667876Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs" 2023-01-27T09:00:40.668002Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs" 2023-01-27T09:00:40.668282Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson20.hs" 2023-01-27T09:00:40.670958Z | Info | Cradle path: lesson20.hs 2023-01-27T09:00:40.671186Z | Warning | No [cradle](https://github.com/mpickering/hie-bios#hie-bios) found for lesson20.hs. Proceeding with [implicit cradle](https://hackage.haskell.org/package/implicit-hie). You should ignore this message, unless you see a 'Multi Cradle: No prefixes matched' error. 2023-01-27T09:00:40.679816Z | Debug | Cradle: Cradle {cradleRootDir = "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3", cradleOptsProg = CradleAction: Default} 2023-01-27T09:00:40.682090Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs" 2023-01-27T09:00:40.682220Z | Debug | Using extensions for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs": [ MonomorphismRestriction , RelaxedPolyRec , ForeignFunctionInterface , ImplicitPrelude , DoAndIfThenElse , EmptyDataDecls , PatternGuards , NondecreasingIndentation , TraditionalRecordSyntax , EmptyCase , StarIsType , CUSKs ] 2023-01-27T09:00:40.709432Z | Debug | Using extensions for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs": [ MonomorphismRestriction , RelaxedPolyRec , ForeignFunctionInterface , ImplicitPrelude , DoAndIfThenElse , EmptyDataDecls , PatternGuards , NondecreasingIndentation , TraditionalRecordSyntax , EmptyCase , StarIsType , CUSKs ] 2023-01-27T09:00:40.814665Z | Debug | Using extensions for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson19.hs": [ MonomorphismRestriction , RelaxedPolyRec , ForeignFunctionInterface , ImplicitPrelude , DoAndIfThenElse , EmptyDataDecls , PatternGuards , NondecreasingIndentation , TraditionalRecordSyntax , EmptyCase , StarIsType , CUSKs ] 2023-01-27T09:00:40.934742Z | Debug | Session loading result: Right (ComponentOptions {componentOptions = ["-dynamic"], componentRoot = "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3", componentDependencies = []},"/home/username/.ghcup/ghc/8.10.7/lib/ghc-8.10.7") 2023-01-27T09:00:41.090380Z | Info | updateFileDiagnostics published different from new diagnostics - file diagnostics: File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs Hidden: no Range: 6:1-7:18 Source: hlint Severity: DsInfo Message: Use newtype instead of data Found: data Box a = Box a deriving Show Why not: newtype Box a = Box a deriving Show decreases laziness File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs Hidden: no Range: 70:14-70:28 Source: hlint Severity: DsInfo Message: Use list literalFound:1 : 2 : 3 : []Why not:[1, 2, 3] File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs Hidden: no Range: 76:14-76:34 Source: hlint Severity: DsInfo Message: Use list literalFound:'c' : 'a' : 't' : []Why not:['c', 'a', 't'] 2023-01-27T09:00:41.210936Z | Info | updateFileDiagnostics published different from new diagnostics - file diagnostics: File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs Hidden: no Range: 6:1-7:18 Source: hlint Severity: DsInfo Message: Use newtype instead of data Found: data Box a = Box a deriving Show Why not: newtype Box a = Box a deriving Show decreases laziness File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs Hidden: no Range: 70:14-70:28 Source: hlint Severity: DsInfo Message: Use list literalFound:1 : 2 : 3 : []Why not:[1, 2, 3] File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs Hidden: no Range: 76:14-76:34 Source: hlint Severity: DsInfo Message: Use list literalFound:'c' : 'a' : 't' : []Why not:['c', 'a', 't'] File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs Hidden: no Range: 20:24-20:25 Source: stan Severity: DsHint Message: ✲ Name: Data types with non-strict fields ✲ Description: Defining lazy fields in data types can lead to unexpected space leaks ✲ Severity: Performance ✲ Category: #SpaceLeak #Syntax Possible solutions: - Add '!' before the type, e.g. !Int or !(Maybe Bool) - Enable the 'StrictData' extension: {-# LANGUAGE StrictData #-} File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs Hidden: no Range: 20:26-20:27 Source: stan Severity: DsHint Message: ✲ Name: Data types with non-strict fields ✲ Description: Defining lazy fields in data types can lead to unexpected space leaks ✲ Severity: Performance ✲ Category: #SpaceLeak #Syntax Possible solutions: - Add '!' before the type, e.g. !Int or !(Maybe Bool) - Enable the 'StrictData' extension: {-# LANGUAGE StrictData #-} File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs Hidden: no Range: 20:28-20:29 Source: stan Severity: DsHint Message: ✲ Name: Data types with non-strict fields ✲ Description: Defining lazy fields in data types can lead to unexpected space leaks ✲ Severity: Performance ✲ Category: #SpaceLeak #Syntax Possible solutions: - Add '!' before the type, e.g. !Int or !(Maybe Bool) - Enable the 'StrictData' extension: {-# LANGUAGE StrictData #-} File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs Hidden: no Range: 62:28-62:29 Source: stan Severity: DsHint Message: ✲ Name: Data types with non-strict fields ✲ Description: Defining lazy fields in data types can lead to unexpected space leaks ✲ Severity: Performance ✲ Category: #SpaceLeak #Syntax Possible solutions: - Add '!' before the type, e.g. !Int or !(Maybe Bool) - Enable the 'StrictData' extension: {-# LANGUAGE StrictData #-} File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs Hidden: no Range: 62:30-62:38 Source: stan Severity: DsHint Message: ✲ Name: Data types with non-strict fields ✲ Description: Defining lazy fields in data types can lead to unexpected space leaks ✲ Severity: Performance ✲ Category: #SpaceLeak #Syntax Possible solutions: - Add '!' before the type, e.g. !Int or !(Maybe Bool) - Enable the 'StrictData' extension: {-# LANGUAGE StrictData #-} File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs Hidden: no Range: 148:35-148:41 Source: stan Severity: DsHint Message: ✲ Name: Infinite: base/length ✲ Description: Usage of the 'length' function that hangs on infinite lists ✲ Severity: PotentialBug ✲ Category: #Infinite #List Possible solutions: - Don't use 'length' if you expect your function to work with infinite lists - {Extra dependency} Use the 'slist' library for fast and safe functions on infinite lists 2023-01-27T09:00:41.235184Z | Info | updateFileDiagnostics published different from new diagnostics - file diagnostics: File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson19.hs Hidden: no Range: 96:21-96:34 Source: hlint Severity: DsInfo Message: Redundant bracketFound:(Maybe Organ) -> StringWhy not:Maybe Organ -> String 2023-01-27T09:00:41.241860Z | Info | Interface files cache directory: /home/username/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda 2023-01-27T09:00:41.248698Z | Info | Interface files cache directory: /home/username/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda 2023-01-27T09:00:41.248791Z | Info | Interface files cache directory: /home/username/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda 2023-01-27T09:00:41.248884Z | Info | Interface files cache directory: /home/username/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda 2023-01-27T09:00:41.248978Z | Info | Interface files cache directory: /home/username/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda 2023-01-27T09:00:41.249061Z | Info | Making new HscEnv. In-place unit ids: [main, main, main, main, main] 2023-01-27T09:00:41.261614Z | Debug | New component cache HscEnvEq: (([],Just HscEnvEq 24),fromList []) 2023-01-27T09:00:41.261809Z | Debug | New component cache HscEnvEq: (([],Just HscEnvEq 25),fromList []) 2023-01-27T09:00:41.261957Z | Debug | New component cache HscEnvEq: (([],Just HscEnvEq 26),fromList []) 2023-01-27T09:00:41.262051Z | Debug | New component cache HscEnvEq: (([],Just HscEnvEq 27),fromList []) 2023-01-27T09:00:41.262113Z | Debug | New component cache HscEnvEq: (([],Just HscEnvEq 28),fromList []) 2023-01-27T09:00:41.262252Z | Debug | Known files updated: fromList [(TargetFile NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson19.hs",fromList ["/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson19.hs"]),(TargetFile NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs",fromList ["/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs"]),(TargetFile NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson20.hs",fromList ["/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson20.hs"]),(TargetFile NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs",fromList ["/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs"]),(TargetFile NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs",fromList ["/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs"])] 2023-01-27T09:00:41.330868Z | Info | updateFileDiagnostics published different from new diagnostics - file diagnostics: File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson19.hs Hidden: no Range: 96:21-96:34 Source: hlint Severity: DsInfo Message: Redundant bracketFound:(Maybe Organ) -> StringWhy not:Maybe Organ -> String File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson19.hs Hidden: no Range: 35:30-35:36 Source: stan Severity: DsHint Message: ✲ Name: Infinite: base/length ✲ Description: Usage of the 'length' function that hangs on infinite lists ✲ Severity: PotentialBug ✲ Category: #Infinite #List Possible solutions: - Don't use 'length' if you expect your function to work with infinite lists - {Extra dependency} Use the 'slist' library for fast and safe functions on infinite lists File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson19.hs Hidden: no Range: 64:22-64:27 Source: stan Severity: DsHint Message: ✲ Name: Data types with non-strict fields ✲ Description: Defining lazy fields in data types can lead to unexpected space leaks ✲ Severity: Performance ✲ Category: #SpaceLeak #Syntax Possible solutions: - Add '!' before the type, e.g. !Int or !(Maybe Bool) - Enable the 'StrictData' extension: {-# LANGUAGE StrictData #-} File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson19.hs Hidden: no Range: 64:37-64:42 Source: stan Severity: DsHint Message: ✲ Name: Data types with non-strict fields ✲ Description: Defining lazy fields in data types can lead to unexpected space leaks ✲ Severity: Performance ✲ Category: #SpaceLeak #Syntax Possible solutions: - Add '!' before the type, e.g. !Int or !(Maybe Bool) - Enable the 'StrictData' extension: {-# LANGUAGE StrictData #-} File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson19.hs Hidden: no Range: 64:49-64:54 Source: stan Severity: DsHint Message: ✲ Name: Data types with non-strict fields ✲ Description: Defining lazy fields in data types can lead to unexpected space leaks ✲ Severity: Performance ✲ Category: #SpaceLeak #Syntax Possible solutions: - Add '!' before the type, e.g. !Int or !(Maybe Bool) - Enable the 'StrictData' extension: {-# LANGUAGE StrictData #-} File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson19.hs Hidden: no Range: 113:16-113:22 Source: stan Severity: DsHint Message: ✲ Name: Infinite: base/length ✲ Description: Usage of the 'length' function that hangs on infinite lists ✲ Severity: PotentialBug ✲ Category: #Infinite #List Possible solutions: - Don't use 'length' if you expect your function to work with infinite lists - {Extra dependency} Use the 'slist' library for fast and safe functions on infinite lists 2023-01-27T09:00:41.334019Z | Debug | Finished build session AsyncCancelled 2023-01-27T09:00:41.334353Z | Debug | Restarting build session due to new component Action Queue: [User TypeCheck] Keys: [ GetKnownTargets; , GetModificationTime; /home/username/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda/_home_username_Documents_Koodausopiskelua_GetProgrammingWithHaskell_Unit3_lesson18/hs.hie , GetModificationTime; /home/username/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda/_home_username_Documents_Koodausopiskelua_GetProgrammingWithHaskell_Unit3_lesson16/hs.hie , GetModificationTime; /home/username/.cache/ghcide/main-1a596a151463f2c53ee4feb14ecd276a1ccebfda/_home_username_Documents_Koodausopiskelua_GetProgrammingWithHaskell_Unit3_lesson19/hs.hie , GhcSessionIO; ] Aborting previous build session took 0.07s 2023-01-27T09:00:41.339896Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson20.hs" 2023-01-27T09:00:41.340117Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs" 2023-01-27T09:00:41.357209Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs" 2023-01-27T09:00:41.357423Z | Debug | Using extensions for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson18.hs": [ MonomorphismRestriction , RelaxedPolyRec , ForeignFunctionInterface , ImplicitPrelude , DoAndIfThenElse , EmptyDataDecls , PatternGuards , NondecreasingIndentation , TraditionalRecordSyntax , EmptyCase , StarIsType , CUSKs ] 2023-01-27T09:00:41.414711Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs" 2023-01-27T09:00:41.414877Z | Debug | Using extensions for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson16.hs": [ MonomorphismRestriction , RelaxedPolyRec , ForeignFunctionInterface , ImplicitPrelude , DoAndIfThenElse , EmptyDataDecls , PatternGuards , NondecreasingIndentation , TraditionalRecordSyntax , EmptyCase , StarIsType , CUSKs ] 2023-01-27T09:00:41.588656Z | Debug | Getting hlint ideas for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson19.hs" 2023-01-27T09:00:41.588942Z | Debug | Using extensions for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson19.hs": [ MonomorphismRestriction , RelaxedPolyRec , ForeignFunctionInterface , ImplicitPrelude , DoAndIfThenElse , EmptyDataDecls , PatternGuards , NondecreasingIndentation , TraditionalRecordSyntax , EmptyCase , StarIsType , CUSKs ] 2023-01-27T09:00:41.704176Z | Debug | Using extensions for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson20.hs": [ MonomorphismRestriction , RelaxedPolyRec , ForeignFunctionInterface , ImplicitPrelude , DoAndIfThenElse , EmptyDataDecls , PatternGuards , NondecreasingIndentation , TraditionalRecordSyntax , EmptyCase , StarIsType , CUSKs ] 2023-01-27T09:00:41.837471Z | Debug | Using extensions for NormalizedFilePath "/home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs": [ MonomorphismRestriction , RelaxedPolyRec , ForeignFunctionInterface , ImplicitPrelude , DoAndIfThenElse , EmptyDataDecls , PatternGuards , NondecreasingIndentation , TraditionalRecordSyntax , EmptyCase , StarIsType , CUSKs ] 2023-01-27T09:00:41.960810Z | Info | updateFileDiagnostics published different from new diagnostics - file diagnostics: File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 6:10-6:24 Source: hlint Severity: DsInfo Message: Use lastFound:head . reverseWhy not:last File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 9:9-9:20 Source: hlint Severity: DsInfo Message: Use minimumFound:head . sortWhy not:minimum File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 15:18-15:35 Source: hlint Severity: DsInfo Message: Redundant bracket Found: (foldr (&&) True) . (map testFunc) Why not: foldr (&&) True . (map testFunc) File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 15:18-15:52 Source: hlint Severity: DsInfo Message: Fuse foldr/mapFound:(foldr (&&) True) . (map testFunc)Why not:foldr ((&&) . testFunc) True File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 15:19-15:34 Source: hlint Severity: DsInfo Message: Use andFound:foldr (&&) TrueWhy not:and File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 15:38-15:52 Source: hlint Severity: DsInfo Message: Redundant bracket Found: (foldr (&&) True) . (map testFunc) Why not: (foldr (&&) True) . map testFunc File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 19:18-19:36 Source: hlint Severity: DsInfo Message: Redundant bracket Found: (foldr (||) False) . (map testFunc) Why not: foldr (||) False . (map testFunc) File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 19:18-19:53 Source: hlint Severity: DsInfo Message: Fuse foldr/map Found: (foldr (||) False) . (map testFunc) Why not: foldr ((||) . testFunc) False File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 19:19-19:35 Source: hlint Severity: DsInfo Message: Use orFound:foldr (||) FalseWhy not:or File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 19:39-19:53 Source: hlint Severity: DsInfo Message: Redundant bracket Found: (foldr (||) False) . (map testFunc) Why not: (foldr (||) False) . map testFunc File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 57:1-57:30 Source: hlint Severity: DsInfo Message: Use newtype instead of data Found: data Events = Events [String] Why not: newtype Events = Events [String] decreases laziness File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 58:1-58:28 Source: hlint Severity: DsInfo Message: Use newtype instead of data Found: data Probs = Probs [Double] Why not: newtype Probs = Probs [Double] decreases laziness File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 83:27-83:47 Source: hlint Severity: DsInfo Message: Use replicateFound:take nToAdd . repeatWhy not:replicate nToAdd File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 90:22-90:51 Source: hlint Severity: DsInfo Message: Redundant bracketFound:(\ x y -> mconcat [x, "-", y])Why not:\ x y -> mconcat [x, "-", y] 2023-01-27T09:00:42.038557Z | Debug | Finished: User TypeCheck Took: 0.70s 2023-01-27T09:00:42.096546Z | Debug | Finished: GetHie Took: 0.04s 2023-01-27T09:00:42.110458Z | Info | updateFileDiagnostics published different from new diagnostics - file diagnostics: File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 6:10-6:24 Source: hlint Severity: DsInfo Message: Use lastFound:head . reverseWhy not:last File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 9:9-9:20 Source: hlint Severity: DsInfo Message: Use minimumFound:head . sortWhy not:minimum File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 15:18-15:35 Source: hlint Severity: DsInfo Message: Redundant bracket Found: (foldr (&&) True) . (map testFunc) Why not: foldr (&&) True . (map testFunc) File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 15:18-15:52 Source: hlint Severity: DsInfo Message: Fuse foldr/mapFound:(foldr (&&) True) . (map testFunc)Why not:foldr ((&&) . testFunc) True File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 15:19-15:34 Source: hlint Severity: DsInfo Message: Use andFound:foldr (&&) TrueWhy not:and File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 15:38-15:52 Source: hlint Severity: DsInfo Message: Redundant bracket Found: (foldr (&&) True) . (map testFunc) Why not: (foldr (&&) True) . map testFunc File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 19:18-19:36 Source: hlint Severity: DsInfo Message: Redundant bracket Found: (foldr (||) False) . (map testFunc) Why not: foldr (||) False . (map testFunc) File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 19:18-19:53 Source: hlint Severity: DsInfo Message: Fuse foldr/map Found: (foldr (||) False) . (map testFunc) Why not: foldr ((||) . testFunc) False File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 19:19-19:35 Source: hlint Severity: DsInfo Message: Use orFound:foldr (||) FalseWhy not:or File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 19:39-19:53 Source: hlint Severity: DsInfo Message: Redundant bracket Found: (foldr (||) False) . (map testFunc) Why not: (foldr (||) False) . map testFunc File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 57:1-57:30 Source: hlint Severity: DsInfo Message: Use newtype instead of data Found: data Events = Events [String] Why not: newtype Events = Events [String] decreases laziness File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 58:1-58:28 Source: hlint Severity: DsInfo Message: Use newtype instead of data Found: data Probs = Probs [Double] Why not: newtype Probs = Probs [Double] decreases laziness File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 83:27-83:47 Source: hlint Severity: DsInfo Message: Use replicateFound:take nToAdd . repeatWhy not:replicate nToAdd File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 90:22-90:51 Source: hlint Severity: DsInfo Message: Redundant bracketFound:(\ x y -> mconcat [x, "-", y])Why not:\ x y -> mconcat [x, "-", y] File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 6:10-6:14 Source: stan Severity: DsHint Message: ✲ Name: Partial: base/head ✲ Description: Usage of partial function 'head' for lists ✲ Severity: Warning ✲ Category: #Partial #List Possible solutions: - Replace list with 'NonEmpty' from 'Data.List.NonEmpty' - Use explicit pattern-matching over lists File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 6:17-6:24 Source: stan Severity: DsHint Message: ✲ Name: Infinite: base/reverse ✲ Description: Usage of the 'reverse' function that hangs on infinite lists ✲ Severity: PotentialBug ✲ Category: #Infinite #List Possible solutions: - Don't use 'reverse' if you expect your function to work with infinite lists - {Extra dependency} Use the 'slist' library for fast and safe functions on infinite lists File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 9:9-9:13 Source: stan Severity: DsHint Message: ✲ Name: Partial: base/head ✲ Description: Usage of partial function 'head' for lists ✲ Severity: Warning ✲ Category: #Partial #List Possible solutions: - Replace list with 'NonEmpty' from 'Data.List.NonEmpty' - Use explicit pattern-matching over lists File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 61:22-61:28 Source: stan Severity: DsHint Message: ✲ Name: Data types with non-strict fields ✲ Description: Defining lazy fields in data types can lead to unexpected space leaks ✲ Severity: Performance ✲ Category: #SpaceLeak #Syntax Possible solutions: - Add '!' before the type, e.g. !Int or !(Maybe Bool) - Enable the 'StrictData' extension: {-# LANGUAGE StrictData #-} File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 61:29-61:34 Source: stan Severity: DsHint Message: ✲ Name: Data types with non-strict fields ✲ Description: Defining lazy fields in data types can lead to unexpected space leaks ✲ Severity: Performance ✲ Category: #SpaceLeak #Syntax Possible solutions: - Add '!' before the type, e.g. !Int or !(Maybe Bool) - Enable the 'StrictData' extension: {-# LANGUAGE StrictData #-} File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 82:18-82:24 Source: stan Severity: DsHint Message: ✲ Name: Infinite: base/length ✲ Description: Usage of the 'length' function that hangs on infinite lists ✲ Severity: PotentialBug ✲ Category: #Infinite #List Possible solutions: - Don't use 'length' if you expect your function to work with infinite lists - {Extra dependency} Use the 'slist' library for fast and safe functions on infinite lists File: /home/username/Documents/Koodausopiskelua/GetProgrammingWithHaskell/Unit3/lesson17.hs Hidden: no Range: 85:20-85:25 Source: stan Severity: DsHint Message: ✲ Name: Partial: base/cycle ✲ Description: Usage of partial function 'cycle' for lists ✲ Severity: Warning ✲ Category: #Partial #List Possible solutions: - Replace list with 'NonEmpty' from 'Data.List.NonEmpty' - Use explicit pattern-matching over lists 2023-01-27T09:00:42.194977Z | Debug | Finished: GenerateCore Took: 0.00s Completed (5 files worked, 0 files failed) ```