you are mistaking the meaning of expressiveness
I'll provide a short example in assembler vs haskell expressive power.
I'll use hello world as an example.
This is considers an amd64 compatible processor, because I have to know the names of the registers.
```asm section .data str: db 'Hello world!', 0Ah str_len: equ $ - str
section .text global _start
_start: mov eax, 4 mov ebx, 1 mov ecx, str mov edx, str_len int 80h mov eax, 1 mov ebx, 0 int 80h ```
In Haskell I don't have to consider any processor.
```hs main = putStr "Hello World" ```
expressiveness is about how much code you need for a certain behavior. It's not about how many (possible fucked up) source files my compiler accepts.