Tergantung pada bagaimana Anda mendefinisikan "pernyataan" dan "ekspresi".
Definisi yang sangat ketat akan membedakan antara pernyataan sebagai "hal-hal yang memiliki efek samping, dan mungkin nilai pengembalian" dan ekspresi sebagai "hal-hal yang memiliki nilai balik, tetapi tidak dapat memiliki efek samping". Dengan definisi seperti itu, tidak ada program yang berarti yang dapat ditulis tanpa setidaknya satu pernyataan (yang harus mengevaluasi ekspresi dan menampilkan nilai pengembaliannya) - ekspresi murni saja tidak dapat berinteraksi dengan dunia di luar program. Suatu bahasa saja masih bisa sepenuhnya murni (yaitu, tidak memiliki pernyataan), jika bagian yang tidak murni dipindahkan dari bahasa ke dalam ekosistem pendukung (yang persis seperti yang dilakukan Haskell, meskipun bahasa tersebut memiliki definisi dan juga ekspresi) .
Namun, jika Anda mengizinkan efek samping dalam ekspresi, maka perbedaan antara pernyataan dan ekspresi menjadi sewenang-wenang dan jauh lebih menarik - tentu saja Anda dapat menciptakan bahasa pemrograman yang hanya terdiri dari ekspresi; sebagian besar dialek Lisp bekerja seperti itu. Dalam situasi seperti itu, mengevaluasi ekspresi untuk efek sampingnya hampir sama persis dengan mengeksekusi pernyataan, dan orang dapat berpendapat bahwa dalam bahasa seperti itu, ekspresi dan pernyataan adalah hal yang sama. Maka, perbedaan antara pernyataan dan ekspresi hanya sintaksis.
Banyak bahasa masih membuat perbedaan sintaksis ini, karena berguna bukan karena alasan teknis, tetapi untuk keterbacaan. Membuat sesuatu ekspresi menandakan bahwa Anda tertarik dengan nilai pengembaliannya, kurang begitu efek sampingnya; membuat pernyataan kepada pembaca bahwa Anda bermaksud menyebabkan efek samping, dan nilai pengembaliannya mungkin menarik atau tidak.