Minimum Scalar Product ข้อนี้โจทย์ให้จับคู่ vector แล้วให้เอาแต่ละจุดของ vector มาคูณกัน โดยต้องได้ผลรวมที่น้อยที่สุด อ่านต่อ ที่นี่ วิธีคิดก็ง่ายมาก ก็ให้ vector นึงเรียงจากน้อยไปมาก อีก vector ก็เรียงมากไปน้อยแล้วคูณกันก็จบ let solve seq1 seq2 = ใน f# การประกาศทับตัวแปรเดิมเค้าเรียกว่า shadowing เช่น let seq1 = seq1 |> Seq.sort จริงๆ ก็เหมือน imparative แต่ shadowing จะพิเศษกว่าตรงที่ ตัวแปลแรกกับตัวแปรหลังไม่เกี่ยวข้องกันเลย เช่น เราสามารถเปลี่ยน type ของตัวแปรก็ได้ และใน f# เราไม่มี sort descending เลยต้อง sortBy negative แทน อีกอย่างคือ operator ของ f# จะไม่ซ้ำกันเลย ดังนั้น minus กับ unary minus มี symbol ต่างกัน ส่วน zip คือ จับคู่ item ใน list แล้วเราก็เอามาคูณกัน แล้วก็หาผลรวม จบ |