2013-10-05 22 views
6
let GetVal (i,isMin,al, be)= 
     let b = new Board(board) 
     if b.SetBoardBool(i) then this.MinMaxAlphaBeta(b, isMin, al, be) 
     else -2 

    let valList = seq{ 
      for i =0 to 8 do 
       yield (GetVal i (not isMin) alphaF betaF , not isMin) 
       } 

Tôi nhận được lỗi F # cho biết: Giá trị này không phải là hàm và không thể áp dụng được.Lỗi F #: Giá trị này không phải là một hàm và không thể áp dụng được

valList là chuỗi các bộ dữ liệu int và bool và GetVal nhận int int int bool và trả về int. nơi alphaF betaF là các biến có thể thay đổi.

+0

Tôi nghĩ rằng bạn sẽ được phục vụ tốt hơn để mua một cuốn sách F # tốt và đọc nó và làm việc thông qua các bài tập trong cuốn sách. Cố gắng tìm hiểu F # bằng cách hack vào mã mà không thực sự hiểu mã đang làm gì có lẽ là một sự lãng phí thời gian của bạn và của chúng ta. –

+0

Nhân tiện, sử dụng các số ma thuật http://en.wikipedia.org/wiki/Magic_number_(programming) trong mã thường là thực hành không tốt và bạn nên tránh khi có thể. Có nghĩa là gì -2 trong đoạn mã trên? –

Trả lời

4

Hoặc bạn có thể thay đổi chữ ký của GetVal để không vượt qua một tuple-- như thế này:

let GetVal i isMin al be = 

i, isMin, al, và được gọi là curried thông số. Bạn có thể tìm thêm chi tiết here theo chủ đề "Áp dụng một phần các đối số". Tôi sẽ đăng một liên kết trực tiếp nhưng có vẻ như không phải là một.

2

chức năng GetVal bạn lấy đối số tupled (a,b,c,d) trong khi bạn gọi nó với đối số cà ri a b c d

Something như thế này nên làm việc

yield (GetVal (i, (not isMin), alphaF, betaF) , not isMin) 
+0

Tôi gặp lỗi này ngay bây giờ. Biến có thể thay đổi 'betaF' được sử dụng theo cách không hợp lệ. Các biến có thể thay đổi không thể bị bắt bởi các bao đóng. Xem xét loại bỏ việc sử dụng đột biến này hoặc sử dụng ô tham chiếu có thể thay đổi được phân bổ theo heap thông qua 'ref' và '!' – thewayman

+0

Tôi không thể nói từ mã bạn đã đăng nhưng tôi đoán bạn đã tạo betaF như thế này: val betaF có thể biến đổi. Sản lượng trong trường hợp này là đóng cửa. Nhìn vào các câu trả lời cho câu hỏi này http://stackoverflow.com/questions/3221200/f-let-mutable-vs-ref Và vì lợi ích tốt lành, hãy mua một tài liệu tham khảo F # tốt và đọc nó. –

Các vấn đề liên quan